Nesoulad snippet a form maker
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Tomáš Votruba
- Moderator | 1114
Pokud zkombinuji při vypisování formuláře makry se snippetem takto
{form uploadForm}
{snippet category}
{label category /} {input category}
<!-- lze takto obejít: -->
{=$_control["uploadForm"]["category"]->label} {=$_control["uploadForm"]["category"]->control}
{/snippet}
{/form}
nastane chyba: Undefined variable: _form
Laděnka:
<?php if ($_label = $_form["category"]->getLabel()) echo $_label->addAttributes(array()) ?>
Dojde tedy k jakési deaktivaci načtení komponenty do $_form
.
Nette 2.0.2, ale už se mi to stávalo i dříve.
- Filip Procházka
- Moderator | 4668
Nedojde k žádné deaktivaci. Snippety využívají k fungování bloky. A bloky fungují tak, že vyzobou svůj obsah do funkcí a jejich volání vloží místo sebe.
Když se tedy volá snippet, formulářové makro se logicky nezavolá a nenastaví nezbytné proměnné. Daleko lepší řešení tedy je:
public function handlePartialFormSubmit()
{
if ($this->isAjax()) {
$this->template->form = $this->template->_form = $this['uploadForm'];
}
}