Kohana 3. Как для Form::select задать пустое значение?

Предыстория.
Недавно столкнулся с проблемой, описанной в заголовке. Селекты я привык писать примерно в таком виде:

<select name="name">
<option value="">- Выберите фразу -</option>
<option value="1">Ололо</option>
<option value="2">Пыщь-пыщь</option>
<option value="3">Риальне</option>
</select>

Ну, или таком:

<select name="name">
<option value=""></option>
<option value="1">Ололо</option>
<option value="2">Пыщь-пыщь</option>
<option value="3">Риальне</option>
</select>

Т.е. когда значение элемента при невыбранном варианте остается пустым.

Развязка.
Когда же я начал создавать формы при помощи хелпера Form фреймворка Kohana, я на некоторое время впал в замешательство, т.к. синтаксис метода Form::select следующий:

select( string $name [, array $options = NULL , mixed $selected = NULL , array $attributes = NULL ] )

В нем, список выбора (опции) задаются массивом и за текст тега <option> </option> берется значение элемента массива, а за значение его ключ. Тут то я и стал размышлять, как же можно задать пустой ключ для элемента массива. Вариант array( null => » ) появился сразу, но показался мне почему то очень и очень не логичным. Поиски в интернете на примерный запрос «kohana form select задать пустое значение» успехом не увенчались. Я даже зарегался на http://www.askdev.ru и уже почти было начал писать свой вопрос… Но… решил все таки проверить свою догадку на практике, дабы не прослыть на askdev.ru полным нубом после первого же вопроса. Какого же было мое удивление, когда интерпретатор никак не сругнулся на такую конструкцию и вывел нужную мне форму. Дальше я уже полез искать инфу про такую конструкцию и вот на что наткнулся:

07-Mar-2003 11:28
«Using NULL as a key will evaluate to an empty string. Using an emptry string as key will create (or overwrite) a key with an empty string and its value, it is not the same as using empty brackets.»

If you create an array like this:
$foo = array(null => ‘bar’);
And then want to access ‘bar’, you must use this syntax:
echo $foo['']; // notice the two single quotes

This will of course cause a fatal error:
echo $foo[];

так что читайте мануалы ;)

Подводя итог.
Из-за долгих разглагольствований суть могла затеряться :) Ответ на вопрос в заголовке: «задав ключ элемента массива равным null». Например вот так:

$select=array(
 null => '',
 '1' => ' Ололо ',
 '2' => ' Пыщь-пыщь ',
 '3' => ' Риальне ',
 );
This entry was posted in PHP, Проблемы и решения and tagged , , , , . Bookmark the permalink.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>