Zapojení komponenty do stromu s parametry $parent a $name
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- besir
- Člen | 170
Ahoj,
vím, že se to tu řešilo, ale zaboha to nemůžu najít :-(
Vytvářím komponentu a chtěl jsem ji jak se patří začlenit do stromu. Řekněme tedy že mám nějakou třídu s konstruktorem ve kterém chci dostat $model…
class EditPrimaryAddress extends \Nette\Application\UI\Control
{
public function __construct(\Nette\ComponentModel\IContainer $parent, $name, \App\PrivateModule\ClientsModule\Component\EditPrimaryAddress\Model\Service $model)
{
parent::__construct($parent, $name);
}
//...
Pak tedy budu mít v config.neon něco takového…?
EditPrimaryAddressDao:
class: \App\PrivateModule\ClientsModule\Component\EditPrimaryAddress\Model\Dao
EditPrimaryAddressService:
class: \App\PrivateModule\ClientsModule\Component\EditPrimaryAddress\Model\Service
EditPrimaryAddress:
class: \App\PrivateModule\ClientsModule\Component\EditPrimaryAddress(..., @EditPrimaryAddressService)
To mi ovšem nádává, že „Circular reference detected for services:
EditPrimaryAddress.“
Tak ted uplně nevím čí jsem.
Nakopněte mě prosím někdo, díky.
- David Matějka
- Moderator | 6445
- komponentu neni nutno zarazovat do stromu rucne, zacleni se tam automaticky, kdyz vyleze z createComponent*
- neregistruj komponentu v neonu, pouze tovarnicku na ni, viz treba https://forum.nette.org/…i-zavislosti
Editoval matej21 (10. 7. 2014 15:42)
- MartinitCZ
- Člen | 580
Parametry $parent a $name jsem deprecated, tedy nejsou potřeba. Taže takto:
class EditPrimaryAddress extends \Nette\Application\UI\Control
{
public function __construct(\App\PrivateModule\ClientsModule\Component\EditPrimaryAddress\Model\Service $model)
{
parent::__construct();
}
//...