Auto-wiring zamezení předávání do constructoru
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- MartinitCZ
- Člen | 580
Zkoušim si hrát s Auto-wiring a narazil jsem na jeden problém.
Mám jednoduchou komponentu, jež dědí od
Nette\Application\UI\Control
.
Nastavuji ji v extension pomocí:
$builder->addDefinition('infoComponent')
->setClass('\Utils\InfoComponent')
->addSetup('setStart', "%start%")
->addSetup('setVersion', "%version%")
Problém je v tom, že toto skončí na chybě: Circular reference
detected for services: copyrightComponent..
Důvodem je to, že se do constructoru předá sama služba. Viz:
protected function createServiceInfoComponent()
{
$service = new \Utils\InfoComponent($this->getService('infoComponent'));
Jak tento rpoblém vyřešit? Rád bych jí pak v presenteru injectnul.
Děkuji.
- Filip Procházka
- Moderator | 4668
abstract class BaseControl extends Nette\Application\UI\Control
{
public function __construct()
{
parent::__construct();
}
}
Tvoje komponenty budou dědit od tohoto (nebo samy budou takhle překrývat konstruktor) a je po problému :)