【问题标题】:URL rewriting in cakephpcakephp 中的 URL 重写
【发布时间】:2014-09-13 23:51:26
【问题描述】:

我一直在寻找如何在 cakephp 中重写 URL,我以为我已经弄清楚了,但我不确定在这种情况下如何重写 URL。

我目前有 - www.example.com/posts/view/1

我想用帖子的名称替换帖子的结尾 id。

我想要 - www.example.com/posts/view/$posts['Post']['title']

我认为我可以这样做:

Router::connect('/posts/view/:title', array('controller' => 'posts', 'action' => 'view'), array('pass' => array('title')));

原来我不能,我该如何重写这个网址?我也读过关于使用蛞蝓?这是我会使用它的情况吗?

【问题讨论】:

    标签: cakephp url-rewriting cakephp-2.0


    【解决方案1】:

    首先为每个帖子创建唯一的 slug,然后在浏览器中用标题替换 slug。将您的路由替换为标题后

    Router::connect('/posts/view/:slug', array('controller' => 'posts', 'action' => 'view'), array('pass' => array('slug')));
    

    因为如果我们不使用 id,我们需要每个帖子的唯一标识符。

    【讨论】:

    • 谢谢!我实际上能够事先弄清楚。不过我还有一个问题。我的标题也是独一无二的,但是当它作为 url 出现时,它包含空格,因为它只是一个字符串。所以我得到 example.com/posts/view/这是一篇示例文章。我怎样才能让它成为 example.com/posts/view/this_is_a_sample_article。我猜我必须在某个地方做一个正则表达式,但我不确定我在哪里做。
    • 使用 Inflector::slug($title, '-');像这样
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多