【问题标题】:Codeigniter - anonymous validation rule, independent of any fieldCodeigniter - 匿名验证规则,独立于任何字段
【发布时间】:2011-10-28 22:38:07
【问题描述】:

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

有什么想法吗?

谢谢。

【问题讨论】:

    标签: forms validation codeigniter


    【解决方案1】:

    我认为您实际上根本不想使用表单验证...

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

    【讨论】:

    • 谢谢,但我在显示表单验证消息的函数中出现错误。事实上,即使没有字段作为参数传递,表单验证也有效。
    • 我是。我的意思是,即使第一个参数不是字段名,“set_rules”函数也可以工作。我只有一个函数,它遍历一个数组,其中包含我忘记推送最后一条规则的所有验证规则。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-06-08
      • 2013-01-14
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      相关资源
      最近更新 更多