未找到试图查看一个项目的代码点火器404页面


codeigniter 404 page not found trying to view one item

这是我在这里的第一个问题,请耐心等待!我第一次设置Codeigniter程序,当我的索引视图工作时,我无法使单个视图页工作。它返回一个404页面未找到错误。

我的foreach中有索引视图的代码,指向我认为url应该在的位置:

<a href=<?= site_url("kittens/view/" . $item->id)?>>Details</a>

如果我点击id为1的小猫,这会将我带到localhost:88888/index.php/kittens/view/1。但我得到了一个404错误。

这是我的视图控制器功能:

  function view(){
  $this->load->model("kittensmodel");
  $this->load->view('_header');
  $this->load->view('detailview', $data);
  $data['kitten_item']= $this->kittensmodel->details();
  }

这是我模型中的函数:

 function details(){
  $id = $this->url->segment(3);
  $this->db->select('*')
           ->from('kittens')
           ->where('id', $id);
  $data = $this->db->get();
  return $data->result();
 }

我的详细视图文件只有这个,来测试它:

<?php
  print_r($kitten_item);
?>

我一直在玩这些路线,但运气不好。以下是我现在拥有的:

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['kittens/(:any)'] = 'kittencontroller/view/$1';

我是php和codeigniter的新手,答案可能很简单,但我真的很感激你的帮助!

尝试使用此链接

<a href=<?= site_url("kittens/".$item->id)?>>Details</a>

试用

<a href=<?= site_url("kittens/view?q=" . $item->id)?>>Details</a>

控制器内

 function view(){
  $q = $this->input->get('q',True);
  $this->load->model("kittensmodel");
  $data['kitten_item']= $this->kittensmodel->details($q);
  $this->load->view('_header');
  $this->load->view('detailview', $data);
  }

在模型中

 function details($q){
  $this->db->select('*')
           ->from('kittens')
           ->where('id', $q);
  $data = $this->db->get();
  return $data->result();
 }

并详细查看

<?php
  print_r($kitten_item);
?>

我认为这是因为你的网站uri链接应该是base_url和

<a href="<?php echo base_url('kittens'.'/'. $this->url->segment(3))?>">Details</a>

<a href=<?= base_url("kittens" .'/'. $this->url->segment(3))?>>Details</a>

路线:

$route['kittens/(:any)'] = 'folder/controller-name/$1';

$route['kittens/(:any)'] = 'controller-name/$1';

$route['kittens/(:any)'] = 'folder/controller-name/index/$1';

$route['kittens/(:any)'] = 'controller-name/index/$1';

始终确保您的链接与您设置的路线相匹配。

如果您的控制器实际上被称为kittenscontroller,那么您的路线应该是

$route['kittens/(:any)'] = 'kittenscontroller/view/$1';

如果您的控制器不存在,CI将生成一个404页面"未找到"。

我注意到,除了上述路线中使用的控制器外,您在其他任何地方都使用复数kittensxxxx。

你应该总是通过手动输入实际的URL来测试这类事情

如果你要使用该路线,那么你的链接应该成为

<a href="<?= site_url("kittens/" . $item->id)?>">Details</a>