首页 文章

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

提问于
浏览
1

我想创建一个独立于任何表单字段的验证规则 . 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

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

    这听起来像是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; ?>
    
  • 2

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

相关问题