現在私は参考書(改訂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のドキュメントはこちら