我对codeigniter很新。我知道php。
如何加载正确的视图?
我的网址:/ blog / this-is-my-title
我告诉控制器类似
如果DB中存在end($ this-> uri-> segment_array()),则将此数据加载到某个视图中。
每次访问/博客/无论
时,我都会收到404错误我看错了什么?
答案 0 :(得分:1)
除非您使用路由,否则网址/blog/this-is-my-title
将始终为404,因为CI正在寻找名为this-is-my-title
的方法,该方法当然不存在。
快速解决方法是将您的帖子显示代码放入其他功能,然后编辑网址以访问帖子:/blog/view/the-post-title
像这样的路线:
$route['blog/(:any)'] = "blog/view/$1";
也可能达到你想要的效果
答案 1 :(得分:1)
可能更多的可能性:
控制器不存在或放在错误的文件夹中
建议:如果您只需要更改数据,请使用同一控制器中的另一个视图
if(something) {
$这 - >负载>查看( '无论');
}
否则
{ $这 - >负载>查看( 'somethingelse'); }
如果没有这些作品发布.htaccess的代码和配置示例,我会看看。
答案 2 :(得分:0)
解决此问题的最佳方法是重新映射控制器。这样,您仍然可以使用相同的控制器来执行其他操作。
无需路由!
enter code here
<?php
class Blog extends Controller {
function __construct()
{
parent::__construct();
}
public function _remap($method, $params = array())
{
if (method_exists($this, $method))
{
$this->$method();
}
else
{
$this->show_post();
}
}
function index()
{
// show blog front page
echo 'blog';
}
function edit()
{
// edit blog entry
}
function category()
{
// list entries for this category
}
function show_post()
{
$url_title = $this->uri->segment(2);
// get the post by the url_title
if(NO RESULTS)
{
show_404();
}
else
{
// show post
}
}
}
?>