#forms #codeigniter #validation #retain
#формы #codeigniter #проверка #сохранить
Вопрос:
Я новичок в codeigniter и пытаюсь добавить и отредактировать категорию с помощью того же метода add.
Вот мой метод добавления:
public function add($category_id = FALSE)
{
$this->load->helper('form');
$this->load->library('form_validation');
if($category_id === FALSE)
{
$this->data['mode'] = 'insert';
$this->data['hidden_fields'] = array('mode' => $this->data['mode']);
}
else
{
$this->data['mode'] = 'update';
$this->data['category_details'] = $this->category_model->get_category_details($category_id);
$this->data['category_id'] = isset($this->data['category_details'][0]['category_id']) ? $this->data['category_details'][0]['category_id'] : '';
$this->data['hidden_fields'] = array('category_id' => $this->data['category_id'], 'mode' => $this->data['mode']);
}
// Fill the form data for edit.
$this->data['name'] = isset($this->data['category_details'][0]['name']) ? $this->data['category_details'][0]['name'] : set_value('name');
$this->data['description'] = isset($this->data['exam_category_details'][0]['description']) ? $this->data['category_details'][0]['description'] : set_value('description');
$this->data['status_y'] = (isset($this->data['category_details'][0]['status']) amp;amp; $this->data['category_details'][0]['status'] === 'Y') ? 'checked="checked"' : set_radio('status', 'Y', TRUE);
$this->data['status_n'] = (isset($this->data['category_details'][0]['status']) amp;amp; $this->data['category_details'][0]['status'] === 'N') ? 'checked="checked"' : set_radio('status', 'Y');
// set the validation rules
$validation_rules = array(
array(
'field' => 'name',
'label' => 'Name',
'rules' => 'trim|required|min_length[5]|max_length[20]|xss_clean'
),
array(
'field' => 'description',
'label' => 'Description',
'rules' => 'trim|min_length[5]|max_length[256]|xss_clean'
)
);
$this->form_validation->set_rules($validation_rules);
// check if validation fails or upload logo fails
if ($this->form_validation->run() === FALSE)
{
$this->data['validation_errors'] = validation_errors();
$this->load->view($this->config->item('templates_path').'header', $this->data);
$this->load->view($this->config->item('templates_path').'sidebar_content', $this->data);
$this->load->view($this->config->item('templates_path').'navigation', $this->data);
$this->load->view('add_category', $this->data);
$this->load->view($this->config->item('templates_path').'footer');
}
else
{
$id = $this->category_model->update_category();
if($id !== FALSE amp;amp; is_numeric($id))
{
$this->session->set_flashdata('msg_success', 'Operation Successful');
redirect('/exams/exam_category/');
}
else
{
// update exam category failed some where
log_message('error', 'Update exam category failed', TRUE);
show_error("Unable to Update exam category : ".$id);
}
}
}
Вышеуказанный метод отлично работает для добавления и редактирования категории, но если проверка формы завершается неудачей, я теряю значения по умолчанию для формы как в случае добавления, так и в случае редактирования. Я использовал метод set_value codeignitor. Как я могу сохранить входные значения формы в случае сбоя проверки?
Комментарии:
1. почему вы хотите, чтобы это было тем же методом? Это просто создаст беспорядок, а не чистый способ сделать это
2. Я использую тот же метод для повторного использования кода
3. почему бы вам не следовать простой концепции CRUD, создав 4 метода, и ваша работа станет легкой. Не создавайте беспорядок в коде.
4. хорошо, я изменил код на концепцию CRUD, спасибо