У меня есть сайт, основанный на фреймворке codeigniter. У меня есть форма на моей странице индекса и некоторые цены на рейсы, которые проходят через мою базу данных.
вот моя форма:
<?php echo validation_errors(); ?>
<form action="<?php echo base_url() ?>detail/travel" method="post">
<input type="text" name="departure">
<input type="text" name="destination">
<input type="text" name="name">
<input type="text" name="cell">
</form>
поэтому моя проблема в том, что когда пользователь не заполнил всю форму и не отправил кнопку, он переходит в функцию «путешествия», которую я сделал в своем контроллере (подробно), и показывает 0 результатов из-за ошибки. Я хочу, чтобы этот пользователь оставался на моей индексной странице со всеми подробностями до тех пор, пока он правильно не заполнит форму и не покажет ошибки на моей индексной странице, если он пропустил какое-либо поле моей формы.
Вот моя функция «путешествия», которую я имею в моем контроллере (подробно):
function search_travel(){
if($_POST){
$config = array(
array(
'field'=>'departure',
'label'=>'departure',
'rules'=>'trim|required|alpha'
),
array(
'field'=>'destination',
'label'=>'destination',
'rules'=>'trim|required|alpha'
),
array(
'field'=>'name',
'label'=>'name',
'rules'=>'trim|required|alpha'
),
array(
'field'=>'cell',
'label'=>'cell no',
'rules'=>'trim|required|regex_match[/^[0-13]+$/]'
)
);
$this->load->library('form_validation');
$this->load->helper(array('form', 'url'));
$this->form_validation->set_rules($config);
if($this->form_validation->run() == FALSE){
$data['errors']= validation_errors();
}
else{
$destination= $this->input->post('destination');
$this->email->send();
$data['var']= $this->Travel->search_travel($destination);
$this->load->view('details',$data)
}
}
}
и моя индексная функция:
function index(){
$data['fares']= $this->Travel->all_fares();
$this->load->view('index', $data);
}
вам нужно перенаправить на старую страницу и напечатать ошибку при просмотре страницы
<?php echo form_error('departure'); ?>
(распечатайте это для каждого поля ввода и ниже в контроллере)
if ($this->form_validation->run() == FALSE) {
redirect('method name that loads form');
}
Других решений пока нет …