Pristup k formulari v sablone pri pouzitich formularovych maker
- aannubis
- Člen | 33
Ahojte, mam takovyto kod v sablone:
{form textForm}
<table class="vypis" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th>Napište název textu</th><th>Zobrazovat datum</th><th>Zvolte jazyk</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 5px;">{input text_name, class => 'pole01'}</td>
<td style="padding: 5px;">{input content_show_date}</td>
<td style="padding: 5px;">{input text_lang_id, class => 'pole01'}</td>
</tr>
<tr>
<th colspan="3">Napište text</th>
</tr>
<tr>
<td style="padding: 5px;" colspan="3">{input text_text}</td>
</tr>
<tr>
<td style="padding: 5px;" colspan="3"><p class="ulozit">{input odeslat}</p></td>
</tr>
</tr>
</tbody>
</table>
{/form}
a takto vytvarim formular v presenteru:
protected function createComponentTextForm($name)
{
$form = new TextForm($this, $name);
if($this->formFunction == 'create') {
$form->onSubmit[] = array($form, 'formSubmitedCreate');
}
if($this->formFunction == 'edit') {
$form->onSubmit[] = array($form, 'formSubmitedEdit');
$form->addHidden('content_id');
$form->addHidden('content_type');
}
}
Zajimalo by me, jestli je mozne nejak pristupovat z sablony k tomu formulari, napriklad abych mohl pouzit neco takoveho jako
<div n:foreach="$form->getComponents(TRUE, 'Nette\Forms\HiddenField') as $control">{$control->control}</div>
vzhledem k tomu, ze skryta pole pridavam k formulari dynamicky na zaklade toho zda jde o editacni, nebo vytvareci formular.
- bojovyletoun
- Člen | 667
- FormMacros:„http://nette.merxes.cz/form-macros/“
- (templateFormRender):„https://componette.org/search/?q=templaterenderer“
- asi bude stačit toto: https://forum.nette.org/…apis-sablony
příklad:
{$control['loginForm']['user']->control}
začal bych možností 3, pak 1. dvojka je dle mě málo používaná
Editoval bojovyletoun (14. 4. 2011 14:42)
- aannubis
- Člen | 33
Ahoj, dikuji, no prave ja ty makra pouzivam – ale neprisel jsem na to, jak kdyz vytvorim ten formular makrem {form nazevFormulare} tak jak v nem pristoupim ke skrytym polym tak, abych je mohl foreachem projit. Chapu zapis {input}, to pouzivam, ale jde mi o to, ze dopredu nevim jake a kolik bude hidden poli, a potreboval bych je tedy vytahnout necim jako
$form->getComponents(TRUE, 'Nette\Forms\HiddenField') as $control
coz se mi vsak nedari, nebot to makro {form nazevFormulare} mi zadnou promenou $form nevytvori :(
- aannubis
- Člen | 33
Tak nakonec jsem to vyresil takto, do FormMacros jsem si pridal
$latte->macros['formHiddenFields']='<?php '.__CLASS__.'::hiddenFields() ?>';
static function hiddenFields(){
foreach (self::getForm()->getComponents(TRUE, 'Nette\Forms\HiddenField') as $polozka) {
echo $polozka->control;
}
}
Kdyz si takto pridam neco do te knihovny, neni to proti nejakym licencnim ujednanim?
- bojovyletoun
- Člen | 667
Licence BSD: Pokud dílo nešíříš, můžeš si dělat co chceš. Pokud
šíříš (můžeš šířit i s úpravami), tak až pak vznikají podmínky
(stručně: informace o copyrightu musí zůstat, prohlášení o zřeknutí
odpovědnosti a nepoužívat Nette
v názvech projektů)
viz zde https://nette.org/cs/license