向 FuelPHP 模型属性添加动态表单字段选项

Posted

技术标签:

【中文标题】向 FuelPHP 模型属性添加动态表单字段选项【英文标题】:Adding dynamic form field options to FuelPHP model properties 【发布时间】:2014-04-07 11:08:33 【问题描述】:

我正在 Fuelphp 的模型 _properties 变量中创建一个选择表单元素:

protected static $_properties = array(
    'category_id' => array(
        'data_type' => 'int',
        'label' => 'Category',
        'form' => array(
            'type' => 'select',
            'options' => array()
        )
    )
);

我想将[category_id][form][options] 设置为SQL 查询的结果,但这显然不能在类声明中完成,我尝试使用__construct() 修改变量,此代码如下但产生了错误。

 function _construct() 

     parent::__construct();

     self::$_properties['category_id']['form']['options'] = array('a');


我的问题是,如何使用 FuelPHP 将字段选项设置为动态?

【问题讨论】:

【参考方案1】:

你快到了。 Fuel 提供了一个名为 init 的静态构造函数,它允许您分配静态属性。

function _init() 

     parent::_init();

     self::$_properties['category_id']['form']['options'] = array('a');


【讨论】:

啊!对,非常接近,谢谢:D。如果我保留parent::_init();,则会收到以下错误Error - Invalid method call. Method _init does not exist. in /Users/beneverard/Dropbox/Business/Web/Projects/Neil White/ER Books/fuel/packages/orm/classes/model.php on line 537。我的模型声明看起来像这样class Model_Book extends \Orm\Model 查看文档后,我似乎不必致电 parent::_init();... 如果我不这样做,它似乎不会引起我的问​​题。 如果您的模型extending 有自己的_init() 方法,您只需要拥有parent::_init()。如果您的父类没有,则可以安全地忽略。 非常好,考虑到我没有发布模型代码,这是一个公平的假设。非常感谢乌鲁 :-)

以上是关于向 FuelPHP 模型属性添加动态表单字段选项的主要内容,如果未能解决你的问题,请参考以下文章

向 ModelAdmin 表单添加额外字段

Django使用不完整的模型创建一个有效的ModelForm,以在表单验证后手动添加字段

带有按钮的表单向其添加新字段

CakePHP:向表单添加字段(动态)

如何在 FuelPHP 中为关系查询添加条件?

向表单添加动态字段(Chronoform)