这是我在这里的第一个问题,请耐心等待!我第一次设置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>