首先,我是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