需要一些关于codeigniter路线的帮助

时间:2013-07-07 11:58:46

标签: php codeigniter symfony routes

有没有办法让codeigniter中的路由像symfony一样工作?

因为你可以重命名路线路径但它仍然不会影响你的输出,因为你所说的是路线名称而不是路线路径与codeigniter不同。

例如,在symfony中,路由设置如下:

news_index:
    path:      /news
    defaults:  { _controller: CmsBundle:News:index }

news_view:
    path:      /news/view/{id}
    defaults:  { _controller: CmsBundle:News:view }

然后我可以通过调用路径名称来访问我的模板,而不是路径路径

<?php 
    // outputs: /news
    echo $view['router']->generate('news_index');

    // outputs: /news/view/1
    echo $view['router']->generate('news_view',array('id' => $news_id)); 
?>

所以,如果我改变路线路径,它不会影响我在我的代码中调用它的方式,因为我正在调用路径名称,所有这一切都会做是改变输出:

news_index:
    path:      /articles
    defaults:  { _controller: CmsBundle:News:index }

news_view:
    path:      /articles/item/{id}
    defaults:  { _controller: CmsBundle:News:view }

仍然是相同的代码,但输出已更改

<?php 

    // outputs: /articles
    echo $view['router']->generate('news_index');

    // outputs: /articles/item/1
    echo $view['router']->generate('news_view',array('id' => $news_id)); 
?>
在codeigniter中,如果我设置这样的路线:

$route['news'] = 'NewsController';
$route['news/view/(:num)'] = 'NewsController/view/$1';

我知道调用它的唯一方法是路径路径:

<?php
    echo anchor('news');
    echo anchor('news/view'.$news_id);
?>

如果我改变了我的路径,我也必须改变我在视野中所写的内容。那将是一件麻烦事。所以我想知道是否有办法让它像symfony一样工作。如果有人能帮助我,我将不胜感激。如果我的解释不清楚,我会道歉。英语不是我的母语:)

1 个答案:

答案 0 :(得分:1)

@ kennyk 提供的博客文章,介绍了他使用路由器扩展程序对类似symfony的命名路由的方法。

这篇文章名为Easy Reverse Routing with CodeIgniter

我想这就是你要找的东西。