Codeigniter - 匿名验证规则,独立于任何字段

问题描述:

我想创建独立于任何表单字段的验证规则。 Codeigniter有可能吗?据我可以在文档中看到,set_rules方法需要一个表单字段名称作为第一个参数。Codeigniter - 匿名验证规则,独立于任何字段

即使如此,我想

$this->form_validation->set_rules('products_count', 'products_count', 'callback_products_count_check'); 

,这是回调检查

function products_count_check() 
    { 
    $user = $this->user_model->get(array(
     'id' => $this->session->userdata('user_id') 
    )); 

    if (! empty($user)) 
    { 
     $kit = $this->kit_model->get(array('id' => $user->kit_id)); 
     if (! empty($kit)) { 
     $products_count = $this->product_model->get(array('user_id' => $user->id, 'count' => TRUE)); 

     if ($products_count >= $kit->max_products) { 
      $this->form_validation->set_message('products_count_check', lang('products.max_products_reached')); 
      return FALSE; 
     } 
     } 
     } 

    return TRUE; 
    } 

函数返回false,但没有显示错误消息。

任何想法?

谢谢。

我不认为你想要使用表单验证所有实际...

这听起来像FLASHDATA工作!

退房the session class,我会用闪存数据在这种情况下,其原因几个

  • 你没有验证表单域,这是什么form_validation类是打算。
  • Flashdata消息用于此目的

所以要做到这一点,在你的控制器......

$this->session->set_flashdata('error','Put your error message here'); 

然后在视图中创建一个通用的错误处理程序

<?php if ($this->session->flashdata('error')): ?> 
    <p class="error"><?php echo $this->session->flashdata('error') ?></p> 
<?php endif; ?> 
+0

谢谢,但我的函数显示表单验证消息时出错。事实上,即使没有字段作为参数传递,表单验证也能正常工作。 – cili

+2

如果您未验证表单....您为什么使用表单验证...? – jondavidjohn

+0

我是。我的意思是,即使第一个参数不是字段名称,“set_rules”函数也可以工作。我只是有一个函数,它循环遍历一个数组,其中包含我忘记推送最后一条规则的所有验证规则。 – cili

这看起来像是在处理表单之前可以检查的东西,除非我错过了某些东西。在那种情况下,我会在你看来处理这个逻辑。只需在控制器中获取所需的所有产品和套件记录,并将它们传递给视图,并在出现错误时使用条件向用户显示相应的通知消息。这比尝试使用验证类更容易,因为它并非真正用于这种方式。