首先,我是CodeIgniter和MVC的新成員。codeigniter CMS表單驗證
我正在創建一個CMS,並且不會決定採用哪條路線,我有兩個應用程序(前端/ CMS),或者只是將管理員創建爲控制器。我選擇了一個應用程序並通過Controller創建管理員。
這樣做我已經遇到了表單驗證的問題,如果它不驗證我不能加載表單我必須重定向,這意味着它不會重新填充未驗證的字段。我在第三個URI段中使用變量來確定是否顯示插入新記錄的表單,用於編輯記錄的填充表單或所有記錄的表格列表。
表單發送到/管理/視頻/保存
function videos()
{
if (!$this->tank_auth->is_logged_in()) {
redirect('/auth/login/');
} else {
$this->load->model('videos_model');
$data['section'] = "Videos";
$data['area'] = "Videos";
$data['mode'] = $this->uri->segment(3, 'create');
$data['user_id'] = $this->tank_auth->get_user_id();
$data['username'] = $this->tank_auth->get_username();
if ($data['mode'] == 'edit') {
$data['ID'] = $this->uri->segment(4);
$data['videos'] = $this->videos_model->get_videos($data['ID']);
} elseif ($data['mode'] == 'list') {
if ($this->uri->segment(4)) {
$data['filter'] = $this->uri->segment(4);
$data['videos'] = $this->videos_model->get_filtered_videos($data['filter']);
} else {
$data['videos'] = $this->videos_model->get_filtered_videos();
}
} elseif ($data['mode'] == 'save') {
$this->load->helper('form');
$this->load->library('form_validation');
$this->form_validation->set_rules('videoTitle', 'Title', 'required');
$this->form_validation->set_rules('Code', 'Youtube Code', 'required');
if ($this->form_validation->run() === FALSE) {
redirect('/admin/videos');
} else {
$this->videos_model->set_videos();
redirect('/admin/videos/list');
}
}
if ($data['mode'] != "create" && empty($data['videos'])) {
show_404();
}
$this->load->view('admin/templates/head', $data);
$this->load->view('admin/templates/body_navbar', $data);
$this->load->view('admin/videos', $data);
$this->load->view('admin/templates/footer', $data);
}
}
我是不是設置有關這個錯誤的方式,我應該用兩個應用程序文件夾或有/ 3個控制器,用於編輯/插入觀看所有。或者有我的當前設置的解決方案?
一旦表單處理完畢,它將把它們帶到所有記錄的列表視圖中,並將它們插入頂部。由於這涉及一個頁面加載和codeigniter進行表單驗證,我沒有看到需要使用Ajax使其複雜化。感謝您的建議。你說沒有必要使用三個控制器,那麼我如何設置控制器將如何完成? – Philwn
採取了點。如果你願意的話,你可能有3個控制器,但我只想指出它不是必需的。我將創建一個名爲admin的單個控制器,並在其中創建3個(或多個你需要的)函數,videoView(),videoEdit()和videoSave()。例如,我將我的控制器建立在每節模型上;儀表板,管理員,帖子,帳戶等,但您可以隨心所欲。 – snh