Same Array for Nette\Forms::addSelect() as for Nette\Forms::addRadioList()
Notice: This thread is very old.
- ic
- Member | 430
If I'm using:
$countries = array(
'Europe' => array(
'CZ' => 'Czech republic',
'SK' => 'Slovakia',
'GB' => 'United Kingdom',
),
'CA' => 'Canada',
'US' => 'USA',
'?' => 'other',
);
$form->addSelect('country', 'Country:', $countries);
it works fine, but if I use same Array for addRadioList method
$form->addRadioList('country', 'Country:', $countries);
it
creates somethink like this:
<input type="radio" name="country" id="frmsomeForm-country-0" value="Europe">
<label for="frmshippingForm-country-0">Array</label>
<br>
<input type="radio" name="country" id="frmsomeForm-country-1" value="CA">
<label for="frmshippingForm-country-1">Canada</label>
<br>
<input type="radio" name="country" id="frmsomeForm-country-2" value="US">
<label for="frmshippingForm-country-2">USA</label>
<br>
<input type="radio" name="country" id="frmsomeForm-country-3" value="?">
<label for="frmshippingForm-country-3">other</label>
That's not exactly what I was expected.
What about to ignore first nested Array and use only its items? like this:
$countries = array(
// 'Europe' => array(
'CZ' => 'Czech republic',
'SK' => 'Slovakia',
'GB' => 'United Kingdom',
// ),
'CA' => 'Canada',
'US' => 'USA',
'?' => 'other',
);
$form->addRadioList('country', 'Country:', $countries);
but automaticly XD
- Quinix
- Member | 108
I don't think this should work automatically, but you can do it yourself by using Arrays::flatten – https://api.nette.org/…ays.php.html#…
- ic
- Member | 430
Quinix wrote:
I don't think this should work automatically, but you can do it yourself by using Arrays::flatten – https://api.nette.org/…ays.php.html#…
but flatten()
make something like this:
$countries = array(
'0' => 'Czech republic',
'1' => 'Slovakia',
'2' => 'United Kingdom',
'3' => 'Canada',
'4' => 'USA',
'5' => 'other',
);
$form->addRadioList('country', 'Country:', $countries);
It loosing my good old keys
Last edited by ic (2013-10-30 15:29)