vykresleni „control“ po svem?
- wdolek
- Člen | 331
snazim se prijit na to, jak si z {control ...}
vydolovat
jednotlive komponenty (podobne, jako kdybych predal Form sablone a v sablone si
je pak vyzobaval pomoci ArrayAccess
)
vychazel jsem z threadu:
https://forum.nette.org/…-renderovani
kde mimo jine zaznelo, ze neco takoveho je jiz mozne / mozne bude:
https://forum.nette.org/…-renderovani#…
https://forum.nette.org/…-renderovani#…
v presenteru mam toto:
public function createComponentLoginForm() {
$form = new \Nette\Application\AppForm($this, 'loginForm');
$form->addText('username', 'Uživatelské jméno')
->addRule(\Nette\Forms\Form::FILLED, 'Zadejte uživatelsié jméno');
$form->addPassword('passwd', 'Heslo')
->addRule(\Nette\Forms\Form::FILLED, 'Zadejte heslo');
$form->addSubmit('btnOk', 'OK');
$form->onSubmit[] = array($this, 'loginFormSubmitted');
return $form;
}
v sablone mam toto:
{block #content}
{control loginForm begin}
<h1>FooBar Administration Area</h1>
{if $flashes}
<div class="message">
{control loginForm errors}
{foreach $flashes as $flash}
<p>{$flash->message}</p>
{/foreach}
</div>
{/if}
<fieldset>
{control loginForm-username label}
{control loginForm-username control}
</fieldset>
<fieldset>
{control loginForm-passwd label}
{control loginForm-passwd control}
{control loginForm-btnOk control}
</fieldset>
{control loginForm end}
{/block}
avsak jedine, co ziskam je:
MemberAccessException
Call to undefined method Nette\Forms\TextInput::render().
<?php $control->getWidget("loginForm-username")->render('label') ;$control->getWidget("loginForm-username")->render('control') ?>
… umm… copak delam spatne? :D … mam: Nette Framework 0.9.3 (revision cc750ea released on 2010–01–28)
Editoval wdolek (7. 4. 2010 13:48)
- Honza Marek
- Člen | 1664
{control loginForm-passwd label}
a podobně totiž naprosto
nedělá to, co potřebuješ.
Pro vypsání labelu/políčka bys potřeboval
resp.
Co to dělá ve skutečnosti, to jsi sám napsal výše.
Ve frameworku nějaká hezčí syntaxe podporována není, ale můžeš zkusit takovou jednu mojí hračku.
Oficiálně se to dělá takhle:
- Přiřadit si v presenteru instanci formuláře do šablony.
- v šabloně