php生成yii model,php – 动态创建Yii FormModel对象(CFormModel)

我正在开发一个涉及在高级抽象中生成表单的应用程序(它是一个CMS应用程序).我想动态创建CFormModel对象并动态设置表单字段.我想我可以通过扩展CFormModel,然后动态创建表示表单字段的类属性(Yii术语中的“属性”)来做到这一点.

为了说明,而不是在以下类中指定登录表单(在文件中定义):

// From: http://www.yiiframework.com/doc/guide/1.1/en/form.model

class LoginForm extends CFormModel

{

public $username;

public $password;

public $rememberMe=false;

private $_identity;

public function rules()

{

return array(

array('username, password', 'required'),

array('rememberMe', 'boolean'),

array('password', 'authenticate'), // assume function authenticate defined elsewhere

);

}

}

我想这样做:

class MyFormModel extends CFormModel {

protected $_rules = array();

public function __construct($attributes=array(), $rules=array()) {

foreach ($attributes as $i => $attr) {

$this->{$attr} = ???; // <<== This is the key here

}

// pass in array of rules as described in Yii doc for CFormModel

$this->_rules = $rules;

}

public function rules() {

return $_rules;

}

}

并在需要时调用它,如下所示:

$myModelObj = new MyFormModel($attr, $rules);

其中:

$attr = array(

'username',

'rememberMe',

'password',

);

$rules = array(

array('username, password', 'required'),

array('rememberMe', 'boolean'),

array('password', 'authenticate'), // assume function authenticate defined elsewhere

);

请注意,在我要完成的任务中,没有任何文件中写入“LoginClass”,它是在代码中即时创建的.

这将是我创建表单(在视图中)做这样的事情:

// based on http://www.yiiframework.com/doc/guide/1.1/en/form.view

<?php echo $wForm->textField($myModelObj,'username'); ?>

等等

我试过这个,$this-> {$attr}行失败了:

Property "MyFormModel.username" is not defined.

实际上该行的代码只是:

$this->{$attr};

???表示我不确定要分配给它的内容.在Yii doc示例中,它们只是将字段定义为公共类变量.

我应该使用魔术方法吗?

我想在这里做什么甚至可能吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值