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; ?>
答
这看起来像是在处理表单之前可以检查的东西,除非我错过了某些东西。在那种情况下,我会在你看来处理这个逻辑。只需在控制器中获取所需的所有产品和套件记录,并将它们传递给视图,并在出现错误时使用条件向用户显示相应的通知消息。这比尝试使用验证类更容易,因为它并非真正用于这种方式。
谢谢,但我的函数显示表单验证消息时出错。事实上,即使没有字段作为参数传递,表单验证也能正常工作。 – cili
如果您未验证表单....您为什么使用表单验证...? – jondavidjohn
我是。我的意思是,即使第一个参数不是字段名称,“set_rules”函数也可以工作。我只是有一个函数,它循环遍历一个数组,其中包含我忘记推送最后一条规则的所有验证规则。 – cili