checkbox s name ve kterém je pole

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Miri
Člen | 117
+
0
-

Ahoj, mam dynamicky vytvářený formulář (podle nějakých hodnot z databáze). Mám zde tedy několik checkboxů, kterým chci nastavit name jako nějaké pole. Např:

$form->addCheckbox('kategorie[]', $kat->nazev);

Zde starý fungční způsob

<input ... name="kategorie[]" />

Bohužel mi to hlasí chybu, zkoušel jsem tam dávat i kategorie[„$i“], kde $i je narustající hodnota o 1. Bohužel mi to pole také nezkouslo. Nevíte nějaké řešení?

Předem díky za rady
Míra

Majkl578
Moderator | 1364
+
0
-

Typický příklad pro použití kontejneru.

$categories = $form->addContainer('categories');

for ($i = 0; $i < 5; $i++) {
	$categories->addCheckbox($i, "Můj skupinový checkbox #$i");
}

Zde starý fungční způsob

Funkční kde? Možná tak v čistém HTML. :)

enumag
Člen | 2118
+
0
-

Nešlo by použít klasicky checkboxlist?

Miri
Člen | 117
+
0
-

Funkční kde? Možná tak v čistém HTML. :)
i php mi to schroustlo, ale asi to nebude zrovna nejlepší způsob. :-)

Každopádně ještě jednou díky, funguje krásně!

VojtaSim
Člen | 55
+
0
-

Majkl578 napsal(a):

Typický příklad pro použití kontejneru.

$categories = $form->addContainer('categories');

for ($i = 0; $i < 5; $i++) {
	$categories->addCheckbox($i, "Můj skupinový checkbox #$i");
}

mohl by jsi napsat jak to vypsat v latte?

Majkl578
Moderator | 1364
+
0
-

VojtaSim napsal(a):

mohl by jsi napsat jak to vypsat v latte?

Zhruba:

{foreach $form['categories']->controls as $ctrl}
    {label $ctrl /}: {control $ctrl}
{/foreach}
VojtaSim
Člen | 55
+
0
-

Já jsem se snažil vytvořit tabulku podobnou těm v datagridu, původně jsem chtěl využít doplňky jako CheckboxList, ale po nainstalování jsem zjistil že to vytvoří jeden list, které nejde rozložit mezi řádky tabulky. Potom jsem našel tenhle návod a začal jsem dělat jednotlivé řádky podle checkboxů a checkboxy podle počtu uživatelů

$accounts = ($this->user->isAllowed('account')) ? $this->account->getAccounts() : false;
// $this->account => model

$AccountRow = $form->addContainer('AccountRow');

foreach ($accounts as $account) {
	$AccountRow->addCheckbox($account['id']);

}

Ale stále nemůžu přijít jak přidat do kontejneru další data účtu (email, jméno, dostupnost), protože mi to vyhazuje: Nette\InvalidStateException Component with name 'fullname' already exists.
pokud zadám:

foreach ($accounts as $account) {
	$AccountRow->addCheckbox($account['id']);

	$AccountRow->addText('fullname', $account['fullname']);
	$AccountRow->addText('email', $account['email']);
}

Takhle nějak by to mělo vypadat: http://i.imgur.com/Lgg8ntS.png

Potřeboval by jsem vědět jestli je i nějaká jiná metoda jak předat ty data do latte, ale zároveň by tam zůstaly ty checkboxy. Nejlepší by bylo rozšířit Nette o pár dalších formulářových prvků, ale pochybují že se to stane