Jak dostat parametr z config.neon do modelu?

Allconius
Člen | 313
+
0
-

Ahoj, mám config neon:

<?php
parameters:
  aplikacenazev: Skoleni
  aplikace: 46
  mailspravce: spravce@web.cz

application:
  errorPresenter: Error
  mapping:
    *: App\*Module\Presenters\*Presenter


session:
  expiration: 2 days
  autoStart: true


database:
    default:
        dsn: 'mysql:host=xxxxxxx.cz;dbname=db1'
        user: skoleni
        password: xxxxxxx
        options:
            lazy: true
            autowired: true
    db2:
        dsn: 'mysql:host=pcdb.brno.cz;dbname=db2'
        user: skoleni
        password: xxxxxxx
        options:
            lazy: true
            autowired: false

services:
    router: App\RouterFactory::createRouter
    - App\Model\DbManager
    - App\Model\Db2Manager(@database.db2.context)
    authenticator:
      App\Auth\Authenticator(@database.db2.context)


extensions:
  tbDatePicker: RadekDostal\NetteComponents\DateTimePicker\TbDatePicker\DI\TbDatePickerExtension
  visualPaginator: IPub\VisualPaginator\DI\VisualPaginatorExtension

tbDatePicker:
  format: j. n. Y


tracy:
  logSeverity: E_ALL
?>

a nevím jak dostat ty parametry aplikacenazev, aplikace a mailspravce do modelu:

<?php

namespace App\Model;

use Nette;
use Nette\Mail\Message;
use Nette\Mail\SendmailMailer;

class Db2Manager
{
    use Nette\SmartObject;

    /** @var Nette\Database\Context */

    private $db2;
    public $aplikace;
    private $mailspravce;

    public function __construct(Nette\Database\Context $db2)
    {
        $this->db2 = $db2;
        $this->aplikace = $this->context->parameters['aplikace'];
        $this->mailspravce = $this->context->parameters['mailspravce'];

    }

.........
?>

Ta syntax „$this->context->parameters[‚mailspravce‘];“ funguje asi jen v presenteru, že ?

Ondřej Kubíček
Člen | 494
+
+3
-

přes $this->context bys k params neměl přistupovat ani v presenteru…
do modelu to dostaneš jednoduše:

- App\Model\Db2Manager(@database.db2.context, %aplikacenazev%, %aplikace%, %mailspravce%)
public function __construct(Nette\Database\Context $db2, string $aplikacenazev, string $aplikace, string $mailspravce)
Allconius
Člen | 313
+
0
-

Ahoj, díky, nakonec jsem to upravil takto:

<?php
parameters:
  config:
    aplikacenazev: Skoleni
    aplikace: 46
    mailspravce: spravce@web.cz

.....
services:
    router: App\RouterFactory::createRouter
    - App\Model\DbManager(%config%)
    - App\Model\Db2Manager(%config%, @database.db2.context)
    authenticator:
      App\Auth\Authenticator(%config%, @database.db2.context)

?>

a model:

<?php

namespace App\Model;

use Nette;
use Nette\Mail\Message;
use Nette\Mail\SendmailMailer;

class Db2Manager
{
    use Nette\SmartObject;

    /** @var Nette\Database\Context */
    private $db2;

    /**
     * @var array
     */
    private $config;

    public $aplikace;
    private $mailspravce;

    public function __construct(array $config, Nette\Database\Context $db2)
    {
        $this->db2 = $db2;
        $this->config = $config;
        $this->aplikace = $this->config['aplikace'];
        $this->mailspravce = $this->config['mailspravce'];

    }
?>

Jen se zeptám, proč nejde rovnou udělat – App\Model\Db2Manager(%parameters%, @database.db2.context) ?, to mi nefungovalo, musel jsem tam přidat ten config …

CZechBoY
Člen | 3608
+
+2
-

Nebo udelat prepravku a tu registrovat v dic a vyzadat si ji v modelu…