Autowire formuláře do presenteru a cyklická závislost
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- 2bfree
- Člen | 248
Ahoj,
pokusil jsem se dle návodu https://doc.nette.org/cs/forms#… vytvořit vlastní třídu extendující \Nette\Application\UI\Form a následně ji definovat jako službu, aby se mi injectovala do presenteru a narazil jsem na problém cyklické závislosti.
<?php
class TestForm extends \Nette\Application\UI\Form
{
public function __construct(\Nette\ComponentModel\IContainer $parent = NULL, $name = NULL)
{
parent::__construct($parent, $name);
$this->addText('name', 'Jméno:');
}
public function create()
{
return new self();
}
}
?>
a v neonu mám
common:
services:
testFormFactory:
class: \TestForm
A dostanu výjimku:
Nette\InvalidStateException
Circular reference detected for services: testFormFactory.
Jediné řešení které jem našel je v neonu udělat toto, ale nepřijde mi to zrovna cool.
common:
services:
testFormFactory:
class: \TestForm(NULL, NULL)
Tušíte co s tím?
- mkoubik
- Člen | 728
Ty parametry konstruktoru tam být nemusí, jsou tam jen z historických důvodů.
public function __construct()
{
parent::__construct();
$this->addText('name', 'Jméno:');
}
service:
testFormFactory:
class: Testform
A BTW: formulář a tovarničku na něj bych rozdělil do 2 tříd. Použij třeba generované továrničky.