Php Codeigniter Datamapper从Post数据设置对象属性
是否有一种方法可以自动/动态设置datamapper对象的所有属性,而不是一对一地分配它们 因此,我的表单字段名与datamapper模型中的属性完全相同 那么,有没有一种较短的方法可以做到这一点:Php Codeigniter Datamapper从Post数据设置对象属性,php,oop,codeigniter,codeigniter-2,codeigniter-datamapper,Php,Oop,Codeigniter,Codeigniter 2,Codeigniter Datamapper,是否有一种方法可以自动/动态设置datamapper对象的所有属性,而不是一对一地分配它们 因此,我的表单字段名与datamapper模型中的属性完全相同 那么,有没有一种较短的方法可以做到这一点: function add() { if( $this->input->post('client-add')) { $c = new Client(); $c->name = $this->input->post('name'); $c->email = $
function add() {
if( $this->input->post('client-add')) {
$c = new Client();
$c->name = $this->input->post('name');
$c->email = $this->input->post('email');
// and so on for about 20 more properties
$c->save();
}}
您只需在循环中运行它:
function add() {
if ( $this->input->post('client-add') ) {
$c = new Client();
$fields = array('name', 'email', 'and', 'so', 'on');
foreach ( $fields as $field ) {
$c->$field = $this->input->post( $field );
}
$c->save();
}
}
嗯,您可以无需任何参数即可使用post,例如:
function add()
{
if($this->input->post('client-add')) {
$c = new Client($this->input->post());
}
$c->save();
}
您可能遇到的主要问题是,客户端加载程序还获取数组中的“client add”字段。但是您应该控制类加载器中的输入。我最终从codeigniter datamapper安装了arrays helper,并从_array($this->input->post())完成了$c=from$c->save();