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

Forms Codeigniter-匿名验证规则,独立于任何字段,forms,validation,codeigniter,Forms,Validation,Codeigniter,我想创建一个独立于任何表单字段的验证规则。在Codeigniter中可能吗?据我在文档中看到的,set_rules方法需要一个表单字段名作为第一个参数 尽管如此,我还是努力了 $this->form_validation->set_rules('products_count', 'products_count', 'callback_products_count_check'); 这是回拨检查 function products_count_check() { $u

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

尽管如此,我还是努力了

$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的工作

检查,我会在这种情况下使用闪存数据有几个原因

  • 您没有验证表单字段,这正是表单验证类的目的
  • 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; ?>


这看起来像是在处理表单之前可以检查的东西,除非我遗漏了什么。在这种情况下,我会在你看来处理这个逻辑。只需在控制器中获取所需的所有产品和套件记录,并将它们传递给视图,如果出现错误,则使用条件向用户显示适当的通知消息。这比尝试使用validation类更容易,因为它实际上并不打算以这种方式使用。

谢谢,但我在显示表单验证消息的函数中出错。事实上,即使没有字段作为参数传递,表单验证仍然有效。我的意思是,即使第一个参数不是字段名,“set_rules”函数也可以工作。我只是有一个函数,它在一个数组中循环,数组中包含我忘记推送最后一条规则的所有验证规则。