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

时间:2011-08-17 13:20:20

标签: forms validation codeigniter

我想创建一个独立于任何表单字段的验证规则。 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,但未显示错误消息。

有什么想法吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

我认为你根本不想使用表格验证......

这听起来像是 FLASHDATA的工作!

结帐the session class,出于某些原因,我会在这种情况下使用Flash数据

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

答案 1 :(得分:0)

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