Component with name ‚XXX‘ does not exist
- Kurtas
- Člen | 109
Ahoj,
už jsem v koncich s takovouto kravinou se trapim asi 40minut :(
mam presenter v nem tovarnicku
public function createCompomentAddEmailsForm($name){
$form = new Form($this, $name);
$form->addText("pocet", "Počet emailů")
->addRule(Form::FILLED,'Vyplňte prosím počet emailů');
$form->addSelect("category", "Kategorie", Emails::getEmailCategoriesArray());
$form->addSubmit('submit', 'Přidat')->onClick[] = callback($this, 'formAddEmailsSubmited');
}
v sablone pro akci Presenter:AddEmails
{block content}
{control addEmailsForm}
Tak proc mi to furt rve ze Component with name ‚addEmailsForm‘ does not exist. :(
Diky
- Jan Voráček
- Člen | 90
@Kurtas: Mrkni se, jestli používáš
Nette\Application\UI\Form
a ne Nette\Forms\Form
.
@Claudie1: v tom by být problém neměl, k presenteru ho připojuje pomocí konstruktoru.
EDIT: tak ne :) v metodě máš createCompoment
Editoval Jan Voráček (17. 8. 2011 17:35)
- Claudie1
- Člen | 21
Jan Voráček napsal(a):
@Kurtas: Mrkni se, jestli používáš
Nette\Application\UI\Form
a neNette\Forms\Form
.@Claudie1: v tom by být problém neměl, k presenteru ho připojuje pomocí konstruktoru.
EDIT: tak ne :) v metodě máš createCompoment
překlep jsem pravda přehlédla
ovšem tomuhle úplně nerozumím:
" k presenteru ho připojuje pomocí konstruktoru."
v šabloně je volána control, ale ta přece neexistuje, protože createcomponent sice formulář uvnitř sebe vytvoří, ale nevrátí ho, tedy jakoby nevytvořila… nebo tomu rozumím špatně?
- Jan Voráček
- Člen | 90
Jak řekl Kurtas, akorát je to Nette\Application\UI\Form
:) API –
do konstruktoru předáš $parent a formulář se přidá sám pomocí
$parent->addComponent($this)
. Já ale stejně u každé
továrničky ten formulář vracím, protože nevrátit nic v továrničce mi
jde proti srsti :)
- newPOPE
- Člen | 648
Pokial viem, tak @hosipLan niekde spominal, ze nie je potrebne pripajat komponenty cez konstruktor. Ale ako pise @Jan Voráček tak ich stačí vrátit a Nette si ich pripojí samo.
Používam to tak a funguje to, potom sa naozaj daju robit dost velke veci cez kontruktor napr DInjekcie atd…