0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【FuelPHP】ORMモデルのFieldsetに変数で選択肢を指定する

Last updated at Posted at 2015-12-19

現在私は参考書(改訂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($選択肢);
		//...
	}
	//...
}

選択肢を$_propertiesoptionsとして設定するのではなくて、
Fieldset_FieldFieldsetfield()でインスタンスを得られる)の
set_options()で設定することができるようです。
ほかにもこのようにFieldset_Fieldを抽出すれば任意の設定を与えられるようです。

Fieldset_Fieldのドキュメントはこちら

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?