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
+
0
-

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
+
+2
-

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

Tymikes
Člen | 63
+
0
-

Použil jsem tu druhou verzi (první jsem nemohl použít přesně z důvodu, jaký jsi psal).
Jinak to funguje, nevěděl jsem, že jde vykreslit i část. Jsem myslel, že jde vykreslit jen celé přes control. šikovné :) Děkuji.

Editoval Tymikes (10. 4. 2016 12:03)