我想从cakephp中的.ctp文件中调用控制器文件的操作。可能吗?是的,比怎么样?请帮忙。例如 我在控制器中有一个动作。 users_controller.php中
<?php
class UsersController extends AppController {
function get_category() {
....
}
}
?>
我想从/question/index.ctp文件中调用它。
答案 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')