1
<?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 --')
?>

選択にデフォルトオプションを追加するより速い方法はありますか? ありがとうございました。

4

2 に答える 2

0

ただし、データベース値の配列キーをルックアップ フィールドなどとして使用している場合は注意してください。Array_unshift は要素の番号を変更するので、好みに応じて変更できますArr::unshift($marcas, '', '--Selecione--');。もう 1 つの利点は、配列を返すことです。そのため、別の行としてではなく、関数呼び出し params 内で使用できます。

Arr::unshift()を参照

<?php echo Form::select('marcas', Arr::unshift($marcas, '', '--Selecione--') , false);?>
于 2011-07-04T13:33:55.577 に答える
0

あなたの方法は、既存のフレームワーク機能といくつかのスマートデータを利用して、非常に高速でエレガントに見えます。

完全にサポートされていないカスタマイズされた動作が必要な場合は、おそらく Form::select() を独自のコードで拡張できます。Kohanaがコアクラスを拡張することを強く提案していることは知っていますが、私はまだKohana3で遊んでいません。Kohana2 では、 here のように実行します。このKohana3 のチュートリアルによると、同様に行いますが、新しいファイルを application/classes フォルダーに配置します。

これがどのように機能するかを推測するためのワイルドな刺し傷: 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
         */
    }
}
于 2010-09-13T19:05:09.273 に答える