从ctp文件调用控制器操作

时间:2010-11-01 19:32:45

标签: php cakephp elements ctp-file

我想从cakephp中的.ctp文件中调用控制器文件的操作。可能吗?是的,比怎么样?请帮忙。例如 我在控制器中有一个动作。 users_controller.php中

<?php
class UsersController extends AppController {

    function get_category() {
        ....
    }

}
?>

我想从/question/index.ctp文件中调用它。

3 个答案:

答案 0 :(得分:2)

这样做的正确方法是:

$this->requestAction(array('controller' => 'users', 'action' => 'get_category'));

创建网址the CakePHP way会提高性能(不必使用路由器)。同样会一直工作,同时这样做:“users / get_category”可能会在你不在索引页面时造成一些麻烦。

它应该只在元素中使用(特别是缓存),如果情况不同的话 - 转到Travis Leleu在评论中写的内容。

答案 1 :(得分:2)

应该注意的是,您不应该依赖requestAction作为常见做法。 requestAction是一项极其繁琐的调用,只有在您无法以其他任何方式组织代码时才能使用。

理想情况下,您需要将控制器操作所需的数据发送到视图,而不是回调到控制器。

function my_action() {
   ...
   $this->set('category', $this->getCategory());
}

答案 2 :(得分:1)

您可以将其称为$ this-&gt; requestAction('controller'=&gt;'users','action'=&gt;'get_category')