【问题标题】:404 page not found codigniter 3.1.6找不到 404 页面 codeigniter 3.1.6
【发布时间】:2018-01-12 22:54:14
【问题描述】:

我是新手,正在学习 codeigniter,我正在尝试对从网上下载的 CRUD 进行简单练习,但我被困在路由上。我尽力从以前的帖子和答案中寻找解决方案,但失败了。 这是我的 Stud_controller.php

 <?php 
 class Stud_controller extends CI_Controller {

  function __construct() { 
     parent::__construct(); 
     $this->load->helper('url'); 
     $this->load->database(); 
  } 

  public function index() { 
     $query = $this->db->get("stud"); 
     $data['records'] = $query->result(); 

     $this->load->helper('url'); 
     $this->load->view('Stud_view',$data); 
  } 

  public function add_student_view() { 
     $this->load->helper('form'); 
     $this->load->view('Stud_add'); 
  } 

  public function add_student() { 
     $this->load->model('Stud_Model');

     $data = array( 
        'roll_no' => $this->input->post('roll_no'), 
        'name' => $this->input->post('name') 
     ); 

     $this->Stud_Model->insert($data); 

     $query = $this->db->get("stud"); 
     $data['records'] = $query->result(); 
     $this->load->view('Stud_view',$data); 
  } 

这是我的 Stud_model.php

<?php 
class Stud_Model extends CI_Model {

  function __construct() { 
     parent::__construct(); 
  } 

  public function insert($data) { 
     if ($this->db->insert("stud", $data)) { 
        return true; 
     } 
  } 

  public function delete($roll_no) { 
     if ($this->db->delete("stud", "roll_no = ".$roll_no)) { 
        return true; 
     } 
  } 

  public function update($data,$old_roll_no) { 
     $this->db->set($data); 
     $this->db->where("roll_no", $old_roll_no); 
     $this->db->update("stud", $data); 
  } 
} 
?> 

这是我的 route.php

 $route['default_controller'] = 'welcome';
 $route['stud'] = "Stud_controller"; 
 $route['stud/add'] = 'Stud_controller/add_student'; 
 $route['stud/add_view'] = 'Stud_controller/add_student_view'; 
 $route['stud/edit/(\d+)'] = 'Stud_controller/update_student_view/$1'; 
 $route['stud/delete/(\d+)'] = 'Stud_controller/delete_student/$1';
 $route['404_override'] = '';
 $route['translate_uri_dashes'] = FALSE;

我的配置文件

 $config['uri_protocol']    = 'REQUEST_URI';

我的 .htaccess 文件是

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

我的网址 = http://localhost/testing/index.php/stud 但错误是找不到404页面 请帮帮我谢谢

【问题讨论】:

  • 在路由器中用小写写你的控制器:$route['stud'] = 'stud_controller';
  • 我使用了 'stud_controller 但仍然有同样的错误
  • 我认为这是其他类型的错误,而不是 CI 错误。看起来您的服务器无法正常工作,因为我只是测试了您的代码,它看起来不错i.imgur.com/nRDNA4L.png
  • 会不会是32bit/64bit不匹配造成的?

标签: codeigniter


【解决方案1】:

问题是控制器的名称。将控制器文件重命名为Stud.php,然后将类声明的第一行更改为...

class Stud extends CI_Controller {

除了你应该使用的 config.php 之外,所有其他代码都可以保留,如问题所示

$config['index_page'] = '';

附注:模型不需要__construct() 方法。

只有当子类需要在__construct() 方法中为自己设置某些东西时,才需要调用parent::__construct()。也许PHP documentation 解释得更好。

【讨论】:

  • 非常非常感谢它现在工作正常,我已将控制器重命名为 Stud.php 并更改了第一行。我也更新了 route.php 再次感谢
  • 这真的很奇怪,因为您的控制器名称中可以包含_。正如您从我的示例中看到的那样,它可以工作......
猜你喜欢
  • 2020-07-14
  • 2019-12-02
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
  • 2013-02-28
  • 2016-12-06
  • 1970-01-01
相关资源
最近更新 更多