0

I am pretty new to codeigniter. I do know php.

How can I accomplish to load the right view?

My url: /blog/this-is-my-title

I’ve told the controller something like

if end($this->uri->segment_array()) does exist in DB then load this data into some view.

I am getting an 404-error everytime I access /blog/whatever

What am i seeing wrong?

4

3 回答 3

1

可能有更多的可能性:

  1. 最常见的——mod_rewrite 不活跃
  2. .htaccess 配置不正确(如果你没有编辑它试试 /blog/index.php/whatever)
  3. 控制器不存在或放错文件夹

    建议:如果您只需要更改数据,请在同一控制器中使用另一个视图

    如果(某事){

    $this->load->view('whatever');

    }

    别的

    { $this->load->view('somethingelse'); }

    如果这些作品都没有发布 .htaccess 的代码和配置示例,我会看看。

于 2011-02-08T10:49:34.907 回答
1

除非您使用路由,否则 url/blog/this-is-my-title将始终为 404,因为 CI 正在寻找一个名为 的方法this-is-my-title,这当然不存在。

一个快速的解决方法是将您的帖子显示代码放入另一个函数并编辑 URL 以访问帖子,例如:/blog/view/the-post-title

像这样的路线:

$route['blog/(:any)'] = "blog/view/$1";

如果您希望 URI 保持为“/blog/this-is-my-title”,也可以实现您想要的

于 2011-02-08T10:39:17.067 回答
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
    }
}
  }
 ?>
于 2011-07-29T17:36:18.357 回答