我正在做一个项目,我使用codeigniter表单验证,但有一个问题,我把检查验证与一个if,但我的错误信息没有出现在视图中,因为它应该。
下面的代码:Ci控制器
public function envia(){
$this->form_validation->set_rules('nome', 'nome', 'required');
$this->form_validation->set_rules('descricao', 'descricao', 'required');
$this->form_validation->set_rules('preco', 'preco', 'required');
if ($this->form_validation->run() == TRUE){
$produtos = array(
"nome" => $this->input->post("nome"),
"descricao" => $this->input->post("descricao"),
"preco" => $this->input->post("preco"),
);
$this->load->model("produtos_model");
$this->produtos_model->salva($produtos);
redirect('/produtos/');
}else{
redirect('/produtos/novo');
}
}
视图 <div class="container">
<div class="row">
<?php echo validation_errors(); ?>
<h2>Cadastro</h2>
<?php echo form_open('produtos/envia');?>
<div class="form-group">
<?php
echo form_label("Nome:", "nome");
echo form_input(array(
"name" => "nome",
"id" => "nome",
"class" => "form-control"
));
?>
</div>
<div class="form-group">
<?php
echo form_label("Descricao:", "descricao");
echo form_input(array(
"name" => "descricao",
"id" => "descricao",
"class" => "form-control"
));
?>
</div>
<div class="form-group">
<?php
echo form_label("Preço:", "preco");
echo form_input(array(
"name" => "preco",
"id" => "preco",
"class" => "form-control"
));
?>
</div>
<div class="form-group">
<?php
echo form_submit(array(
"class" => "btn btn-primary",
"value" => "Cadastrar"
));
?>
</div>
<?php echo form_close();?>
感谢大家的关注。
在else部分不要使用重定向,因为重定向重新加载页面,这就是为什么你不能得到验证消息。使用那里的$this->load->view('your_view')
public function envia(){
$this->form_validation->set_rules('nome', 'nome', 'required');
$this->form_validation->set_rules('descricao', 'descricao', 'required');
$this->form_validation->set_rules('preco', 'preco', 'required');
if ($this->form_validation->run() == TRUE){
$produtos = array(
"nome" => $this->input->post("nome"),
"descricao" => $this->input->post("descricao"),
"preco" => $this->input->post("preco"),
);
$this->load->model("produtos_model");
$this->produtos_model->salva($produtos);
redirect('/produtos/');
}else{
$this->load->view('your_view_where_is_your_form');
}
}
你的代码应该像这样:
public function produtos()
{
$status = $this->uri->segment(2); // Sample url: http://localhost/productos/success
if(!empty($status) && $status = 'success')
{
$this->load->view('view_success');
}else
{
$this->form_validation->set_rules('nome', 'nome', 'required');
$this->form_validation->set_rules('descricao', 'descricao', 'required');
$this->form_validation->set_rules('preco', 'preco', 'required');
if ($this->form_validation->run() == TRUE){
$produtos = array(
"nome" => $this->input->post("nome"),
"descricao" => $this->input->post("descricao"),
"preco" => $this->input->post("preco"),
);
$this->load->model("produtos_model");
$this->produtos_model->salva($produtos);
redirect('/produtos/success'); //Success
}else{
$this->load->view('view_form_input') // Your form was here
}
}
}
**记住,为了得到错误验证,永远不要使用redirect
函数。
redirect
功能。