【发布时间】:2013-10-06 21:18:54
【问题描述】:
我正在尝试在 cakePHP 2.3 中设置以下路由:
域/新闻/slug
我遵循cookbook guidelines on routing 并且创建的路线是正确的。我遇到的问题是,在选择链接时,我收到“NewsController 中缺少方法”错误消息。
这是我的配置:
Router::connect(
'/news/:slug/',
array('controller' => 'news', 'action' => 'view'),
array(
'pass' => array('slug'),
'slug' => '[^_]+'
)
);
我使用正则表达式(任何不包含下划线的字符串)传入 slug。
这是我在索引页面中的链接:
<?php echo $this->Html->link(
$news['News']['title'],
array(
'controller' => 'news',
'action' => 'view',
'slug' => $news['News']['slug']
)
); ?>
如前所述,URL 构建正确,如下所示:/news/test-slug-news-story
但是当我点击它时,我会收到“NewsController 中缺少方法”错误消息
我错过了什么很明显吗,因为我看了太久而无法看到它。
谢谢,保罗
【问题讨论】:
-
我会使用白名单而不是黑名单来匹配 slug。
-
感谢 Martin,这是否等于白名单,'[a-zA-Z0-9_-]+'
-
会的,是的。因为您要指定模式中应该的字符,而不是不应该的字符(如果您忘记将某些内容列入黑名单,这可能会导致错误) .过度谨慎总比不够谨慎好。
标签: php cakephp routing routes