在codeigniter中使用表单验证'field'中的变量

时间:2014-03-22 18:16:50

标签: php codeigniter validation

我试图了解是否有办法在'field'中使用Codeigniter表格验证中的变量。

当我使用文本字符串时,表单验证正常工作,如前两个数组中的字段'product_name'和'category_id'所示,但是当我尝试使用变量时,它会在下面的第三个数组中断开。< / p>

这是代码,在函数中加载form_validation:

$this->load->library('form_validation');
$this->form_validation->set_rules($this->add_product_page_one);

定义表单规则的数组:

private $add_product_page_one = array(
    array(
        'field'   => 'product_name', 
        'label'   => 'Product Name', 
        'rules'   => 'required|max_length[255]|trim|xss_clean'
    ),
    array(
        'field'   => 'category_id',
        'label'   => 'Category', 
        'rules'   => 'required|integer'
    ),
    array(
        'field'   => $this->config->item('prod_filter_db_1'), 
        'label'   => $this->config->item('prod_filter_name_1'), 
        'rules'   => 'integer'
    )
);

错误讯息:

Parse error: syntax error, unexpected '$this' (T_VARIABLE) in
 /Applications/MAMP/htdocs/appname/application/modules/company/controllers/add.php 

1 个答案:

答案 0 :(得分:1)

正如我在评论中所说的

  

您无法为属性分配变量。属性只能保存常量/静态值,不能保存动态值。

您可以创建私有方法而不是属性,并确保它返回数组规则。

private function add_product_page_one() {
    return array(
        array(
            'field' => 'product_name',
            'label' => 'Product Name',
            'rules' => 'required|max_length[255]|trim|xss_clean'
        ) ,
        array(
            'field' => 'category_id',
            'label' => 'Category',
            'rules' => 'required|integer'
        ) ,
        array(
            'field' => $this->config->item('prod_filter_db_1') ,
            'label' => $this->config->item('prod_filter_name_1') ,
            'rules' => 'integer'
        )
    );
}

然后你可以像这样使用它:

$this->load->library('form_validation');
// call the private method
$this->form_validation->set_rules($this->add_product_page_one());