我已经在CodeIgniter3框架中编写了一些代码来编辑和更新帖子。但是当我点击提交按钮它重定向到404页面,并显示没有像这里这样的页面我试图在控制器中创建$数据,然后将其移到模型它不起作用,现在我不知道在哪里问题。这是我的观点:CODEIGNITER3框架在编辑帖子时显示页面不存在
<?php $attributes = array('class' => 'rex-forms', 'name' => 'editcourse', 'id' => 'editcourse', 'data-parsley-validate' => ''); ?>
<?php echo form_open_multipart('courses/update', $attributes); ?>
<input type="hidden" name="courses_slug" value="<?= $courses['courses_slug'];?>">
<!-- General -->
HERE IS SOME CODE
</form>
这里是我的控制器:
public function edit($courses_slug) {
//check login
if(!$this->session->userdata('logged_in')) {
redirect('');
}
$data['courses'] = $this->popular_courses_model->get_popular_courses($courses_slug);
//check user
if($this->session->userdata('id') != $data['courses']['instructor_id']){
redirect('');
}
$data['categories'] = $this->courses_model->get_all_categories_for_courses();
$data['title'] = 'Edit Course';
if (empty($data['courses'])) {
show_404();
}
$this->load->view('templates/header');
$this->load->view('courses/editcourse', $data);
$this->load->view('templates/footer');
}
public function update() {
//check login
if(!$this->session->userdata('logged_in')) {
redirect('');
}
$this->courses_model->update_post();
$this->session->set_flashdata('post_updated', 'Your post has been updated');
redirect('blog');
}
这里是我的模型:
public function update_post() {
//insert image
$config['upload_path'] = './assets/img/single_courses/';
$config['allowed_types'] = 'jpg|png';
$config['max_size'] = 4096;
$config['overwrite'] = FALSE;
$config['remove_spaces'] = TRUE;
$this->load->library('upload', $config);
if(!$this->upload->do_upload('userfile')){
$post_image = '';
} else {
$datar = array('upload_data' => $this->upload->data());
$post_image = $_FILES['userfile']['name'];
}
//insert the user registration details into database
$slugtitle = mb_strtolower($this->input->post('name'), 'UTF-8');
$slug = url_title($slugtitle);
$data = array(
'title' => strip_tags($this->input->post('name')),
'duration' => $this->input->post('duration'),
'certification' => $this->input->post('certification'),
'price' => strip_tags($this->input->post('price')),
'begining' => $this->input->post('begining'),
'courses_description' => $this->input->post('description'),
'purpose' => $this->input->post('purpose'),
'courses_slug' => $slug,
'instructor_id' => $this->session->userdata('id'),
'category_id' => $this->input->post('category'),
'img' => $post_image
);
$this->db->where('courses_slug', $this->input->post('courses_slug'));
return $this->db->update('courses', $data);
}
如果不使用路由,您呼叫控制器'courses',然后调用funvtion更新 – Vickel
@Vickel一个未知的网页,谢谢!我忘了添加路线:D但我有一个问题。我是编程新手。这些路线是做什么的?为什么在添加路线之前它不起作用? –
CI路由在这里有很好的记录:https://www.codeigniter.com/user_guide/general/routing.html没有路由,你会按照这样的CI URL方法:https://www.codeigniter.com/user_guide/ general/urls.html,这意味着(如你的截图所示),你可以在控制器'courses'中调用函数'update'。在CI主页上阅读教程,您将学到很多东西! – Vickel