我正在使用表单验证库但是我遇到了一些我无法解决的问题。
我有几个字段,
我有:
现在如果没有设置menu_title,那么它应该采用page_title的值 然后,我需要检查以确保在给定级别menu_title是唯一的。
所以,
if($menu_title == '')
$menu_title = $page_title;
return $this->db->
select('menu_title')->
from('cart_categories')->
where(array('menu_title' => $menu_title,
'parent_id' => $category_parent))->
get()->num_rows() == 0;
但我不知道如何在表单验证库中实际使用它?
答案 0 :(得分:1)
您需要使用回调函数才能执行此操作。只需定义一个(略微更改代码以适应格式)。请注意,这不是我的头脑(和文档):
public function check_title($string) {
$this->db->select('menu_title')->from('cart_categories');
$this->db->where(array('menu_title' => $string,'parent_id' => $this->input->post('category_parent')));
if ($this->db->get()->num_rows() != 0 {
$this->form_validation->set_message('check_title', '%s must be unique');
return FALSE;
}
return TRUE;
}
然后设置该特定字段的输入以使用回调:
$this->form_validation->set_rules('menu_title', 'Menu Title', 'callback_check_title');
我认为你可以在回调函数名称的左侧添加一个额外的下划线,以确保CI不会路由它(因为它是公共的),只是反映你输入的位置规则的回调名称。不过,我对此并不积极。
至于传递附加字段,因为回调只接受字符串,你可以设置一个类变量。
您也可以自己处理验证,在您的情况下可能更干净。