Jak se dostat v 2.3 na getContext()->parameters?
- David Matějka
- Moderator | 6445
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
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
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