用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4822|回复: 5
收起左侧

[已解决] CI能否单独设定表单某字段的错误提示信息

[复制链接]
发表于 2012-3-1 15:08:10 | 显示全部楼层 |阅读模式
本帖最后由 80后奔三ing 于 2012-4-16 22:31 编辑

整个流程的想法是:用户在添加某字段内容时,首先到数据库验证该名称是否存在,如果存在就提示已存在,不存在就添加到数据库里面,我想不通过ajax的方法,之前用过set_rules里添加回调函数,以及form_validation->run()来做,但感觉这样有点麻烦。就想直接数据库判断了以后,向表单对应的字段的form_error传送错误信息。

代码如下:
一、视图页面代码:
        <?php echo form_open('admin/user/department_add');?>
        <p>
                <label for="parent_department">上级部门</label>
                <select name="parent_department" id="parent_department">
                        <option value="0">顶级</option>
                        <?php foreach ($department as $key=>$val){?>
                        <option value="<?php echo $key;?>">$val</option>
                        <?php }?>
                </select>
        </p>
        <p>
                <label for="department">部门名称</label>
                <?php echo form_input('department',set_value('department'));?>
        </p>
                <?php echo form_error('department');?>
        <p><?php echo form_submit('submit','添加部门');?></p>


二、控制器页面代码:
        public function department_add()
        {
                $data['parent_id'] = $this->input->post('parent_department',TRUE);
                $data['name'] = $this->input->post('department',TRUE);
                if($this->User_Model->check_data_unique('name',$data['name'],'department'))
                {
                        print_r($data);
                }else
                {
                        //设置提示department字段名称已存在!
                }

        }

三、模型页面代码:
        public function check_data_unique($field_name,$field_val,$table_name)
        {
                $sql = "select `{$field_name}` from `{$table_name}` where `{$field_name}` = `{$field_val}`";
                $query = $this->db->query($sql);
                $row = $query->row();
                return (empty($row->$field_name)) ? TRUE : FALSE;
        }

发表于 2012-4-17 08:28:34 | 显示全部楼层
收藏,学习!
 楼主| 发表于 2012-3-1 15:11:37 | 显示全部楼层
我看到手册里有set_message这个方法,好像这个方法只是定义错误信息,而没有将错误信息定义到对应字段的。

$this->form_validation->set_message('表单字段名', '错误信息内容');

不知道这样的想法能否实现?
发表于 2012-3-1 17:05:59 | 显示全部楼层
表单的一切信息都在form_validation->run()以后产生。
 楼主| 发表于 2012-4-16 22:31:17 | 显示全部楼层
哈哈,找到方法了,只怪自己当初太粗心了。谢谢楼上的指点呀,
就是在用CI自带的表单验证方法里,加入自定义的回调函数来处理,然后通过
set_message
可以从某种程度完成我想要的效果
发表于 2016-8-4 14:26:42 | 显示全部楼层
echo validation_errors();//显示全部错误信息
echo form_error('title');//显示单个错误信息
echo set_value('title');//设置表单值

本版积分规则