gpt4 book ai didi

CakePHP 路由 - [home]/slug 作为 URL

转载 作者:行者123 更新时间:2023-12-02 05:45:04 25 4
gpt4 key购买 nike

我正试图掌握 Cake 的路由,但我没有找到解决我的特定问题的方法。

我想将 www.example.com/slug 映射到 www.example.com/venues/view/slug,其中 slug 是特定场所记录的 URL 友好名称。

然后我还想将 www.example.com/slug/events 映射到 www.example.com/events/index/venue:slug。

在阅读了关于路由的 CakePHP 文档之后,我反复阅读了几次,但还是一头雾水。我了解如何为每个单独的 field 创建这些路线,但我不确定如何让 Cake 即时生成路线。

最佳答案

您要小心将某些内容映射到域名后的第一个路径。这意味着您将打破 Controller / Action /参数/参数范式。您可以这样做,但这可能意味着您需要在路由文件中为站点定义每个 url,而不是使用 Cake 的路由魔法。

另一种方法是将/v/用于场所,将/e/用于事件,以保持您的 url 简短,但将 url 分解为正常范例。

如果您仍想执行您在此处请求的操作,您可以执行如下操作。它将 slug 限制为字母、数字、破折号和下划线。

Router::connect(
'/:slug',
array(
'controller' => 'venues',
'action' => 'view'
),
array(
'slug' => '[a-zA-Z0-9_-]+'
)
);
Router::connect(
'/:slug/:events',
array(
'controller' => 'events',
'action' => 'index'
),
array(
'slug' => '[a-zA-Z0-9_-]+'
)
);

然后在您的 Controller 中,您将使用以下内容访问 slug(以第一个路由为例)。

function view(){
if(isset($this->params['slug'])){
//Do something with your code here.
}
}

关于CakePHP 路由 - [home]/slug 作为 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6213883/

25 4 0
文章推荐: PHP 正斜杠匹配
文章推荐: ruby-on-rails - Ember 模型只加载最后一条记录
文章推荐: php - 哪种是使用 PHP 发送电子邮件的最佳方式
文章推荐: ember.js - 没有 Ember 数据的 Ajax - 未捕获的类型错误 : Object # has no method 'forEach'