【问题标题】:Using variable in form validation 'field' in codeigniter在codeigniter的表单验证“字段”中使用变量
【发布时间】:2014-03-22 18:16:50
【问题描述】:

我正在尝试了解是否可以通过 Codeigniter 表单验证在“字段”中使用变量。

当我使用文本字符串时,表单验证可以正常工作,如前两个带有字段“product_name”和“category_id”的数组所示,但是当我尝试使用下面第三个数组中的变量时它会中断。

代码如下,在函数中加载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 

【问题讨论】:

  • 您不能将变量分配给属性。属性只能保存常量/静态值,不能保存动态值。
  • 好的,谢谢你告诉我。您对如何解决此问题有任何提示吗?这是一个白标软件产品,将在那里进行多次迭代,表单上的某些字段因迭代而异。我们的目标是保持代码相同(除了在配置文件中定义的变化)
  • 让我们知道这些变量是在哪里定义的?
  • 它们是在配置文件中定义的,我们实际上是这样称呼它们的:$this->config->item('prod_filter_db_1'),我编辑了问题以反映这一点。
  • @RahilWazir 感谢您的反馈。这可能是我们必须更详细地考虑的事情,并提出一个适用于我们特定结构的解决方案。但是,如果有人遇到过同样的问题,听听您解决问题的方式会很有帮助。

标签: php codeigniter validation


【解决方案1】:

正如我在 cmets 中所说的

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

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

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());

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多