#php #codeigniter #validation
#php #codeigniter #проверка
Вопрос:
Я делаю проект, в котором использую проверку формы 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();?>
Я ценю внимание.
Комментарии:
1. Вы должны перенаправить пользователя на страницу «produtos / novo», если его отправка не подтвердится?
2. Это похоже на полезную часть документации
3. вы должны загрузить представление вместо перенаправления, чтобы отобразить сообщение об ошибке
Ответ №1:
В разделе 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');
}
}
Ответ №2:
Ваш код должен быть таким:
public function produtos()
{
$status = $this->uri->segment(2); // Sample url: http://localhost/productos/success
if(!empty($status) amp;amp; $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
функцию только тогда, когда проверка прошла успешно.