Мне нужно ввести данные в несколько таблиц после того, как Пользователь отправит форму. Я уже создал форму и контроллер. Мой вопрос в том, как я могу обрабатывать ошибки. Предположим, что есть некоторая ошибка, например, в одной таблице данные не вставлены по какой-то причине. SO теперь я хочу предупредить пользователя с конкретным сообщением об ошибке вроде («Something is wrong.try again» и т. Д.) Также мне нужно сохранить значение формы, если возникает ошибка.Codeigniter лучший способ обработки ошибок, которые на самом деле не являются ошибками проверки
меня попробовать следующее:
1) Добавить set_value поля формы, чтобы сохранить форму значения
2) Добавить сеанс флэш-сообщение (Но, чтобы отобразить его я должен обновить страницу, которая не сохраняет сеанс. значение)
Вот мой код:
файл контроллера:
public function add_new()
{
$this->load->helper('form');
$this->load->library('form_validation');
if($this->input->post())
{
if($this->input->post('add') !== false)
{
$post_val = $this->input->post();
//Set validation rules
$this->form_validation->set_rules('field1', 'field1 name', 'required');
.
.
.
if($this->form_validation->run() == TRUE)
{
//Add Data into first table
$this->load->model("my_model");
$input_data['f1']=$post_val['filed1'];
$input_data['f2']=$post_val['filed2'];
$insert_fid =$this->my_model->insert($input_data);
//check whether data inserted into 1st table or not.
if($insert_fid)
{
//successfully inserted
//write into file(I have to write into file(for some requirement))
$this->load->helper('file');
$data = "\r\n".$input_data['f1'].".";
if (! write_file(WRITE_FILE, $data,'a+')) //WRITE_FILE is constant
{
//suppose file not writen then I have to alert user(Only to inform)
$this->session->set_flashdata('error',"Data no written.");
}
//Insert Into second table
$input_data=array();
$input_data['f1']=$post_val['field3'];
$input_data['f2']=$post_val['field4'];
$input_data['f3']=insert_fid;
$this->load->model("my_model_two");
$insert_sid =$this->my_model_two->insert($input_data);
//same procedure for checking
if($insert_sid)
{
//Insert Into Third table
$input_data=array();
$input_data['f1']=$post_val['field5'];
$input_data['f2']=$post_val['field6'];
$input_data['f3']=insert_sid;
$this->load->model("my_model_three");
$insert_tid =$this->my_model_three->insert($input_data);
//Insert Into Fourth table
$input_data=array();
$input_data['f1']=$post_val['field7'];
$input_data['f2']=insert_sid;
$this->load->model("my_model_four");
$insert_aid =$this->my_model_four->insert($input_data);
if(!$insert_tid)
{
$this->session->set_flashdata('error',"Error mesage 1");
//redirect(base_url(uri_string()));
}
elseif(!$insert_aid)
{
$this->session->set_flashdata('error',"Error mesage 2");
//redirect(base_url(uri_string()));
}
else
{
//ok all done successfully now I can redirect user to list page
$this->session->set_flashdata('message',"success message");
redirect(base_url().'list/');
}
}
else
{
$this->session->set_flashdata('error',"Error Message");
//redirect(base_url(uri_string()));
}
}
else
{
$this->session->set_flashdata('error',"Error Message");
//redirect(base_url(uri_string()));
}
//redirect(base_url(uri_string()));
}
}
}
$page_data["title"]="Add Data";
$this->load->view("myview",$page_data);
}
мой взгляд файл
<div class="page-content">
<?php
$success = $this->session->flashdata('message');
if(isset($success) && trim($success) != "")
{
?>
<div class="alert alert-block alert-success" id="success-alert">
<button type="button" class="close" data-dismiss="alert">
<i class="ace-icon fa fa-times"></i>
</button>
<p>
<?= $success ?>
</p>
</div>
<?php
}
$error = $this->session->flashdata('error');
$validate_error = validation_errors();
if((isset($error) && trim($error) != "") || trim($validate_error) != "")
{
?>
<div class="alert alert-block alert-danger">
<button type="button" class="close" data-dismiss="alert">
<i class="ace-icon fa fa-times"></i>
</button>
<p>
<?= $error ?>
<?= $validate_error ?>
</p>
</div>
<?php
}
?>
<div class="page-header">
<h1 class=""><?=$title?>
</h1>
</div>
<form>
//My form Which sucessfully created
</form>
</div> <!-- page-contnet -->
Я хочу, чтобы отобразить ошибки (ожидать ошибки проверки), а также хотите сохранить от стоимости.
Да @ cssBlaster21895. Я также думаю о том же решении добавить в $ page_data ['errors']. Но для этого я должен снова поставить условие для просмотра, чтобы отобразить ошибку. Поэтому я подумал, что может быть лучшее решение. Благодарю за ваш ответ. –
Добро пожаловать. – cssBlaster21895