現在私は参考書(改訂FuelPHP入門)でFuelPHPを勉強しているのですが、タイトルの内容でハマりました。
Orm\Modelの$_propertiesはstatic
これを加えたい
$選択肢 = array(
'value' => 'ラベル',
//...
)
これがやりたい
class Model_Example extends \Orm\Model
{
protected static $_properties = array(
'id',
'answer' => array(
'data_type' => 'varchar',
'label' => 'セレクトボックス',
'form' => array('type' => 'select'),
'options' => $選択肢
),
'created_at',
'updated_at',
);
//...
}
この方法を企んでいたのですがもちろん$_propertiesはstaticなフィールドなので例外を投げられておしまいです。
Controllerで対処する
Model側で解決できなかたので、Controllerに選択肢追加のコードを書きます。
解決法
class Controller_Example extends Controller_Template
{
function action_example()
{
//...
$fieldset = Fieldset::forge()->add_model('Model_Example');
$fieldset->field('type')
->set_options($選択肢);
//...
}
//...
}
選択肢を$_propertiesのoptionsとして設定するのではなくて、
Fieldset_Field(Fieldsetのfield()でインスタンスを得られる)の
set_options()で設定することができるようです。
ほかにもこのようにFieldset_Fieldを抽出すれば任意の設定を与えられるようです。
Fieldset_Fieldのドキュメントはこちら