Úprava rendereru formuláře
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Marsme
- Člen | 75
Potřebuju upravit výchozí renderer formuláře aby mi metoda addGroup vykreslila popisek do klasické formy
<tr>
<th>Popisek</th>
<td></td>
</tr>
Kód mám takhle. Problém je v tom že se mi prvky za addGroup vykreslí nahoře na začátku formuláře (nepokračuje to plynule za prvky napsanými před add group…)
<?php
public function buildForm()
{
$form = $this->form;
$form->addProtection("Vypršel časový limit žádosti, odešlete prosím formulář znovu!");
$form->addText("name", "Název akce")
->setRequired("Musíte vyplnit název akce");
$form->addDatePicker("term", "Termín akce")
->setRequired("Musíte zvolit termín akce");
$form->addText("event_time", "Čas akce")
->addRule(Form::PATTERN, "Čas musí být ve formátu hh:mm", "^(0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$");
$form->addText("place", "Místo");
$form->addTextArea("perex", "Perex");
$form->addTextArea("description", "Popis")
->getControlPrototype()->class("redactor");
$form->addGroup("Přiřadit na stránky");
$children = $this->getAvaiblePlaces();
if (!empty($children)) {
foreach ($children as $place) {
$form->addCheckbox("cal_" . $place["id"],$place["name"])
->setAttribute("style","width: 15px; height: 15px; margin-right: 5px; margin-top: 5px;");
}
}
$form->setCurrentGroup(NULL);
$form->addCheckbox("visible", "Zobrazovat")
->setAttribute("style", "width: 15px;height: 15px;margin-right: 5px;margin-top: 10px;");
$form->addSubmit("odeslat", "Přidat akci");
$form->onSuccess[] = callback($this, "formProcess");
$renderer = $form->getRenderer();
$renderer->wrappers["group"]["container"] = "tr";
$renderer->wrappers["group"]["label"] = "td";
return $form;
}
?>
- ViPEr*CZ*
- Člen | 817
Udělat si vlastní šablonu nějak takhle:
{form signForm}
<table>
<th>Přeji si emailem odebírat tyto novinky:</th>
<td>
{formContainer emailNews}
<ul>
<li>{input sport} {label sport /}</li>
<li>{input science} {label science /}</li>
</ul>
{/formContainer}
</td>
...
</table>
{/form}
- ViPEr*CZ*
- Člen | 817
Příliš to teď nechápu. Ale koukám teď, že tam je toto:
$form->addGroup("Přiřadit na stránky");
a pak se vypisují checkboxy? Nemá tam být:
$sub = $form->addGroup("Přiřadit na stránky");
a pak
$sub->addCheckbox("cal_" . $place["id"],$place["name"])
? viz: https://doc.nette.org/cs/forms#…
Editoval ViPEr*CZ* (14. 11. 2012 18:29)
- Marsme
- Člen | 75
ViPErCZ napsal(a):
Příliš to teď nechápu. Ale koukám teď, že tam je toto:
$form->addGroup("Přiřadit na stránky");
a pak se vypisují checkboxy? Nemá tam být:
$sub = $form->addGroup("Přiřadit na stránky");
a pak
$sub->addCheckbox("cal_" . $place["id"],$place["name"])
?
Už jsem to vyřešil jinak.
Ve třídě formuláře jsem ty prvky které chci vložím do containeru a pak v šabloně
<?php
{formContainer pages}
<tr>
<th></th>
<td style="padding-top: 15px;"><span class="form_description">Přiřadit ke stránkám</span></td>
</tr>
{foreach $form["pages"]->controls as $control}
<tr>
<th>{$control->label}</th>
<td>{$control->control}</td>
</tr>
{/foreach}
{/formContainer}
?>