2017-09-16 44 views
0

我已经在CodeIgniter3框架中编写了一些代码来编辑和更新帖子。但是当我点击提交按钮它重定向到404页面,并显示没有像这里这样的页面enter image description here我试图在控制器中创建$数据,然后将其移到模型它不起作用,现在我不知道在哪里问题。这是我的观点: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); 
    } 
+1

如果不使用路由,您呼叫控制器'courses',然后调用funvtion更新 – Vickel

+0

@Vickel一个未知的网页,谢谢!我忘了添加路线:D但我有一个问题。我是编程新手。这些路线是做什么的?为什么在添加路线之前它不起作用? –

+1

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

回答

0

您正在使用的模型popular_courses_model但你有没有装在自动加载模型因为您尚未将其加载到控制器中。

$this->load->model('popular_courses_model'); 

您的模型缺少某些结构,除非您刚刚在模型中发布函数。假设你没有,你的模型需要看起来像这样:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Popular_courses_model extends CI_Model 
{  
    public function __construct() 
    { 
     parent::__construct(); 
     // Whatever code you want in your constructor 
    } 

    public function update_post() 
    { 
     // your code here 
    }  
} 

和你的模型应该是Popular_courses_model.php资本化,并在你的“模型”文件夹中。

希望帮助,

保罗

+0

我在模型中包含了所有这些内容https://yadi.sk/i/eISeHes13MwYsr。但我不知道如何解决这个问题 –

相关问题