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
+
0
-

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
+
+1
-
  1. komponentu neni nutno zarazovat do stromu rucne, zacleni se tam automaticky, kdyz vyleze z createComponent*
  2. 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
+
+1
-

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();
    }
//...
besir
Člen | 170
+
0
-

Hmmm, aha :D Diky oboum :-)