我正在尝试在cakePHP 2.3中设置以下路由:
域/消息/蛞蝓
我已经跟随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中的遗漏方法'错误消息
显而易见的是我所缺少的,因为我已经看了太长时间才能看到它。
谢谢,保罗
答案 0 :(得分:0)
你可以尝试这个:
<?php
// Routing code
Router::connect('/news/:slug/',
array(
'controller' => 'news',
'action' => 'view'
),
array(
'slug' => '[a-zA-Z0-9_-]+'
)
);
?>
<?php
// HTML Link code.
echo $this->Html->link(
$news['News']['title'],
array(
'controller' => 'news',
'action' => 'view',
'slug' => $news['News']['slug']
)
);
?>
如果它不适合你,请告诉我:)
由于
答案 1 :(得分:0)
如上所述,我发现在&#39; slug&#39;之后有一个反斜杠。在路线设置中,控制器解释&#39;:slug /&#39;作为控制器动作。
其中一个&#39; doh&#39;时刻。
代码应如下所示:
Router::connect(
'/news/:slug',
array('controller' => 'news', 'action' => 'view'),
array(
'pass' => array('slug'),
'slug' => '[a-zA-Z0-9_-]+'
)
);