关于codeigniter的另一个问题,这里有一些细节:
查看页面:
<?php if (isset($error)){echo $error; } ?>
<form action="<?php echo site_url('mem_posting/post');>" method="post">
<input type="text" name="fname">
some fields goes here...
</form>
控制器页面(mem_posting):
public function post_form()
{
$this->load->view('header');
$this->load->view(form_page);
}
public function post()
{
$post_data=array(
'mem_id'=>$this->input->post('mem_id'),
//other inputs...
)
$this->load->model('member_model');
if ($this->member_model->check_member($post_data)===true)
{
//row exist
// **i would like to load the same page but
// **with error message "like already exist".
}else{
$this->member_model->inset_member($post_data);
}
}
模型页面:
public function insert_member($post_data=array())
{
extract($post_data);
$this->db->where('member_id', $member_id);
$this->db->insert('membership', $post_data);
}
public function check_member($post_data=array())
{
extract($post_data);
$this->db->select('mem_id');
$this->db->where('mem_id', $mem_id);
$query = $this->db->get('membership');
if ($query->num_rows() > 0){
return true;
}else{
return false;
}
}
你可以看到视图页面包含表单,现在我想要实现的是回显像'已经存在'这样的错误,所以我不需要编写另一个$ this-&gt; load-&gt; view(' if语句中的post_form'。
提前谢谢你..
答案 0 :(得分:2)
您的意思是仅向视图发送变量吗?
$data['error'] = "error message";
$this->load->view('some/view', $data);
答案 1 :(得分:0)
嘛!当你的表单被提交时,你应该运行验证。所以,想象一下你提交了2个字段。它会是这样的:
$this->form_validation->set_rules('name', 'Name', 'required|trim|xss_clean');
$this->form_validation->set_rules('mem_id', 'ID Member', 'required|trim|is_unique[yourtable.mem_id]|xss_clean');
if ($this->form_validation->run()){
// Do your cool stuff now because validation passed
}else{
// Whatever...validation fails, load your view.
}
所以在你看来,你应该在表格的顶部加上这样的东西:
<?php echo validation_errors(); ?>
is_unique [yourtable.mem_id]将验证输入在数据库中是否唯一。所以如果真的很独特,那就好了。