我想创建一个独立于任何表单字段的验证规则。 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,但未显示错误消息。
有什么想法吗?
谢谢。
答案 0 :(得分:2)
我认为你根本不想使用表格验证......
这听起来像是 FLASHDATA的工作!
结帐the session class,出于某些原因,我会在这种情况下使用Flash数据
这样做,在你的控制器......
$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)
这看起来像是在处理表单之前可以检查的内容,除非我遗漏了某些内容。在这种情况下,我会在你的视图中处理这个逻辑。只需获取控制器中所需的所有产品和套件记录,并将其传递给视图,并使用条件在出现错误时向用户显示相应的通知消息。这比尝试使用验证类更容易,因为它并不是真的打算以这种方式使用。