我正在做一个项目我正在使用codeigniter表单验证,但是有一个问题,我将检查验证用if,但我的错误消息没有出现在视图中。 / p>
以下代码:
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();?>
我很感激关注。
答案 0 :(得分:2)
在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');
}
}
答案 1 :(得分:0)
您的代码应该是这样的:
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
功能。