cakePHP route元素指向丢失的控制器动作?

时间:2013-10-06 21:18:54

标签: php cakephp routing routes

我正在尝试在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中的遗漏方法'错误消息

显而易见的是我所缺少的,因为我已经看了太长时间才能看到它。

谢谢,保罗

2 个答案:

答案 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_-]+'
        )
    );