Kohana Framework: добавить опцию по умолчанию - PullRequest
1 голос
/ 13 сентября 2010
<?php
// My controller.
$marcas = ORM::Factory('marca')->
find_all()->
as_array('nome', 'nome');
array_unshift($marcas, '-- Selecione --');
?>

<?php
// My view.
echo Form::select('marca', $marcas, '-- Selecione --')
?>

Есть ли более быстрый способ добавить опцию по умолчанию в выбор?Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 июля 2011

Будьте осторожны, если вы используете ключ массива для значения базы данных, например, в качестве поля поиска.Array_unshift перенумерует ваши элементы, поэтому вы можете предпочесть Arr::unshift($marcas, '', '--Selecione--');. Другое преимущество состоит в том, что возвращает массив, поэтому вы можете использовать его в параметрах вызова функции, а не в отдельной строке

См. Arr ::unshift ()

<?php echo Form::select('marcas', Arr::unshift($marcas, '', '--Selecione--') , false);?>
0 голосов
/ 13 сентября 2010

Ваш путь выглядит довольно быстро и элегантно, используя существующую функциональность фреймворка с некоторыми интеллектуальными данными, чтобы воспользоваться этим.

Возможно, вы могли бы расширить Form :: select () собственным кодом, если вы хотите, чтобы любое настраиваемое поведение не поддерживалось напрямую. Я знаю, что Kohana настоятельно рекомендует расширить свои основные классы, но я еще не играл с Kohana3. В Kohana2 вы бы сделали это , как показано здесь . Согласно этому руководству для Kohana3, вы должны сделать это аналогично, но поместите новый файл в папку application / classes.

Дикий удар по предположению, как это будет работать: создайте form.php в приложении / классах и введите:

class Form extends Form_Core {

    public static function select() {
        /**
         * Add the code from http://dev.kohanaframework.org/projects/kohana3-core/repository/revisions/master/entry/classes/kohana/form.php#L252
         * and change it slightly to also include a default value when writing out
         * the form, or even better via another optional function parameter
         */
    }
}
...