Select a options data-attributy

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

Ahoj,

Potrebuji v nette forms vygenerovat neco takoveho:

<select id="country-select" name="country">
    <option data-lat="53.412910" data-lon="-8.000000" data-zoom="6" value="102">Czech Republic</option>
    <option data-lat="53.094024" data-lon="-1.768799" data-zoom="5" value="77">Slovakia</option>
</select>

Select pridavam do formulare klasicky takto:

$countries = array(
    "102" => "Czech Republic",
    "77" => "Slovakia"
);
$form->addSelect('country', 'Country', $countries);

Poradi nekdo jak tam dostat ty data-* parametry?

Diky,

@flexroad

Editoval flexroad (15. 4. 2015 13:26)

David Matějka
Moderator | 6445
+
+7
-

melo by jit:

$contries = array(
	102 => \Nette\Utils\Html::el()->setText('Czech republic')->data('lon', ...)->data('lat', ...),
)
flexroad
Člen | 117
+
0
-

David Matějka napsal(a):

melo by jit:

$contries = array(
	102 => \Nette\Utils\Html::el()->setText('Czech republic')->data('lon', ...)->data('lat', ...),
)

Skvele… funguje jak ma… Diky.

_Martin_
Generous Backer | 679
+
0
-

Kdybych se chtěl vyhnout té práci s HTML v presenteru, nešlo by to udělat přes ruční vykreslování? Myslím něco na způsob následujícího, ale dotáhnout to propojení (např. atribut disabled,…).

<select name="{$form[country]->htmlName}" id="{$form[country]->htmlId}">
	<option n:if="$form[country]->prompt" value="">{$form[country]->prompt}</option>
	<option n:foreach="$form[country]->items as $key => $label" value="{$key}" data-lat="{$countryData[$key]->lat}" data-lon="{$countryData[$key]->lon}">{$label}</option>
</select>