CakePHP:$ this-> set(...)在视图中是空的?

时间:2012-08-14 21:12:52

标签: cakephp

我似乎无法弄清楚如何使用路由参数和set-function。这是我做的:

配置/ routes.php文件:

Router::connect('/professions/:linkname', array('controller' => 'professions', 'action' => 'display'));

控制器/ ProfessionsController.php:

public function display($linkname = null) {
    $this->set('test', $linkname);
    //$this->set('profession', $this->findByLinkname($linkname));
}

查看/职业/ display.ctp:

<?php echo $test; ?>

当我打开/专业/测试时,页面为空。为什么? (正如你所看到的,$ test只是一个测试。我评论了我真正打算做的事情。但这也不起作用)

2 个答案:

答案 0 :(得分:1)

好的,RFTM ......在官方书中找到了它。传递参数必须如此指定:

Router::connect('/professions/:linkname', array('controller' => 'professions', 'action' => 'display'), array('pass' => array('linkname'));

现在可行。

答案 1 :(得分:0)

它详细解释了如何在CakePHP Book中执行您所要求的内容:

http://book.cakephp.org/2.0/en/development/routing.html#passing-parameters-to-action

或者,根据Eike的回答(但不那么粗鲁),试试这个:

Router::connect(
    '/professions/:linkname',
    array(
        'controller' => 'professions',
        'action' => 'display'
    ),
    array(
        'pass' => array(
            'linkname'
        )
    )
);

显然你可以将这一切都放在一行,如果这更容易,或者更符合你的喜好。