Missing argument 1 for Nette\Forms\Controls\CheckboxList::getControlPart()
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Tymikes
- Člen | 63
Mám formulář s CheckboxListem, dostávám chybu
Missing argument 1 for Nette\Forms\Controls\CheckboxList::getControlPart()
$form->addCheckboxList('uzivatele', 'Vyberte uživatele:', $this->uzivatele->RowsToArray(array('role' => 'writer')));
který vykresluji ručně
{foreach $uzivateleVypis as $uzivatel}
<div class="checkbox">
<label><input type="checkbox" value="{$uzivatel->username}" n:name="uzivatele">{$uzivatel->username}</label>
</div>
{/foreach}
Takhle vypadá ta funkce, které něco chybí, vrací HTML, ale nevim co mi v tom vykreslení chybí, když value tam mám a zbytek není potřeba.
public function getControlPart($key)
{
$key = key(array((string) $key => NULL));
return parent::getControl()->addAttributes(array(
'id' => $this->getHtmlId() . '-' . $key,
'checked' => in_array($key, (array) $this->value, TRUE),
'disabled' => is_array($this->disabled) ? isset($this->disabled[$key]) : $this->disabled,
'required' => NULL,
'value' => $key,
));
}
Editoval Tymikes (10. 4. 2016 11:11)
- David Matějka
- Moderator | 6445
vykresluj ten prvek nasledovne:
<label n:name="uzivatele:$uzivatele->username">
<input n:name="uzivatele:$uzivatele->username"/>
{$uzivatele->username}
</label>
(tohle tedy pocita s tim, ze ta tvoje metoda RowsToArray u definice formulare vraci jako klic toho pole username)
ale ani bys asi nemusel pouzivat manualni vykreslovani, zkus jen
$form->addCheckboxList('uzivatele', 'Vyberte uživatele:', $this->uzivatele->RowsToArray(array('role' => 'writer')))
->getSeparatorPrototype()->setName('div')->class('checkbox');
a pak bud vykreslis cely formular automaticky (pres control makro) nebo pokud
potrebujes vykreslovat manualne, tak pres {input uzivatele}
vykreslis cely checkbox list