2

有没有办法让 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一样工作。如果有人可以帮助我,我将不胜感激。如果我的解释不清楚,我深表歉意。英语不是我的母语:)

4

1 回答 1

1

@kennyk有一篇博客文章描述了他使用路由器扩展来实现类似 symfony 的命名路由的方法。

这篇文章被称为使用 CodeIgniter 的轻松反向路由

我想这就是你要找的。

于 2013-07-07T14:22:25.890 回答