我在验证表单
时得到字段未设置错误这是我的观点
<div class="panel-body">
<h3>Basic Information</h3>
<?php $atrrib = array('class' => 'form-horizontal','role' => 'form');?>
<?php echo form_open('school/shule',$atrrib);?>
<div class="col-md-6">
<div class="form-group">
<label for="add_name" class="col-md-2 control-label">School:</label>
<div class="col-md-7">
<input type="text" class="form-control" name="add_name" id="addSchoolName" placeholder="School name">
</div>
</div>
</div>
<button type="submit" class="btn btn-default">Next</button>
<?php echo form_close();?>
</div>
</div>
</div>
<div class="col-md-2"><?php include_once (APPPATH. 'views/admin/admin_right_column.php');?></div>
</div>
这是我的控制器
class School扩展了CI_Controller {
public function __construct() {
parent::__construct();
}// End of construct
public function shule(){
$this->load->library('form_validation');
if($this->form_validation->run('first_form') === TRUE){
echo 'Valid';
}
else{
if(validation_errors()){
echo validation_errors();
}
$data['title'] = "Add School";
$data['page'] = "admin| add school";
$this->load->view('admin/admin_header',$data);
$this->load->view('admin/add_school',$data);
$this->load->view('admin/admin_footer');
}
}
}
这是我的form_validation配置
$config['first_form'] = array(
array(
'field' => 'add_name',
'label' => 'School name',
'rules' => 'required|xss_clean|min_length[2]'
)
);
当我将字段留空时,我得到一个字段未设置错误,并且当我输入单个字符时,我得到一个无法访问与您的字段名称错误相对应的错误消息。
答案 0 :(得分:0)
试
$this->form_validation->set_rules('add_name', 'School name', 'trim|required||min_length[2]');
if ($this->form_validation->run() == TRUE){
echo 'Valid';
}
else {
$data['title'] = "Add School";
$data['page'] = "admin| add school";
$this->load->view('admin/admin_header',$data);
$this->load->view('admin/add_school',$data);
$this->load->view('admin/admin_footer');
}
并检查视图中的错误
if(validation_errors()){
echo validation_errors();
}
答案 1 :(得分:0)
我试着查看CI启动错误的位置
无法访问与您的字段名称
对应的错误消息
然后我发现了这个
if ($result === FALSE)
{
if ( ! isset($this->_error_messages[$rule]))
{
if (FALSE === ($line = $this->CI->lang->line($rule)))
{
$line = 'Unable to access an error message corresponding to your field name.';
}
}
else
{
$line = $this->_error_messages[$rule];
}
因此,这意味着CI检查您是否未在该字段中设置规则消息,然后检查是否存在与form_validation_lang.php文件中的已触发函数/规则对应的行。 所以我假设CI没有找到与您的字段名称对应的错误消息,因为
解决方案是交叉检查你的lang文件,如果它有一个与你的规则同名的行,或删除任何与form_validation_lang.php同名的自定义语言文件,或者你可以添加一个规则,如
$lang['required'] = 'Name field is required";
或您在自定义语言文件中的验证文件/函数中定义的任何其他规则。
答案 2 :(得分:0)
您可以使用set_message设置自定义错误消息,并使用set_rules函数中的标签。你可以在这里找到文档。
以下是一个例子:
// Set the validation rule
$this->form_validation->set_rules('project_name', 'Project Name', 'trim|required');
// Set the custom message with %s where the label should go
$this->form_validation->set_message('required', '%s is required. Please enter a value.');
// For an invalid project_name, you will get the error:
// Project Name is required. Please enter a value.