Jak se dostat v 2.3 na getContext()->parameters?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
flexroad
Člen | 117
+
0
-

Ahoj,

koukam, ze getContext() je depricated. Muze me nekdo nasmerovat, jak se dostanu napriklad k tomuto, pripadne kde to muzu najit i do budoucna v nejake dokumentaci?

$this->getContext()->parameters['consoleMode'];

Diky moc,

@flexroad

David Matějka
Moderator | 6445
+
+1
-

nepotrebujes se k tomu dostat – predej si tu hodnotu z neonu kam potrebujes (do sluzby, do presenteru..). viz treba: https://doc.nette.org/…dependencies#…

n.u.r.v.
Člen | 485
+
0
-

Nevím, zda je to správný postup, ale já to řeším takto:

Vytvořím si ve složce App/Model např. ParameterRepository.php:

<?php

namespace Model;

use Nette;

class ParameterRepository extends Nette\Object {

    private $parameters;

    public function __construct($parameters) {
        $this->parameters = $parameters;
    }

    public function getParam() {
        return $this->param;
    }
}

V neonu v services mám:

- Model\ParamRepository(@container::getParameters())

a pak v basePresenterech:

protected $parameters;

    public function injectRepository(Model\ParameterRepository $paramRepository) {
        $this->parameters = $paramRepository->getParam();
    }

pak už můžu v jakémkoliv presenteru použít $this->parameters[‚nejaky_parametr‘]…

Takto to dělám proto, že když potřebuji v presenteru např 7 parametrů, tak kdybych to dělala pomocí registrace presenteru v neonu, tak to bude dost nepřehledné…
Ale pokud je to špatný postup, rád se poučím a změním…

David Kudera
Člen | 455
+
+5
-

Osobně si taky myslím, že nic takovýho není potřeba. Dokonce ani v prezenterech. Teda dřív jsem to tak dělal, ale postupně jsem došel k tomu, že mnohem lepší je mít prezentery prázdné, jen pro načtení nějaké té entity např. pro detail / editaci a vytvoření komponent z továrniček. Vše je v samostatných třídách a službách a až jim dávám potřebné parametry (ne všechny). Navíc se to i hrozně snadno testuje, prezentery jsou čisté a na první pohled jdou vidět všechny závislosti