[英]cakePHP route element directs to missing controller action?
我正在尝试在cakePHP 2.3中设置以下路由:
域/新闻//
我遵循了有关路由的烹饪指南,并且创建的路由是正确的。 我遇到的问题是,当选择链接时,出现“ NewsController中缺少方法”错误消息。
这是我配置的:
Router::connect(
'/news/:slug/',
array('controller' => 'news', 'action' => 'view'),
array(
'pass' => array('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中的缺少方法”错误消息
很明显我所缺少的东西,因为我看了这么久才能够看到它。
谢谢保罗
您可以尝试以下一种方法:
<?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']
)
);
?>
如果对您不起作用,请告诉我:)
谢谢
如上所述,我发现通过在路由设置中的“ slug”后加上反斜杠,控制器将“:slug /”解释为控制器动作。
那些“ doh”时刻之一。
代码应如下所示:
Router::connect(
'/news/:slug',
array('controller' => 'news', 'action' => 'view'),
array(
'pass' => array('slug'),
'slug' => '[a-zA-Z0-9_-]+'
)
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.