【发布时间】:2014-06-09 00:50:11
【问题描述】:
如前所述,当我在 shell 中使用时:
$this->requestAction('/sites/zaz/option1');
动作没有被触发。为了测试这一点,我尝试了:
public function zaz($option1 = null) {
CakeLog::write('acces', 'action triggered');
return 'got it !';
}
并且操作没有完成,也没有写入任何日志。我所有的其他日志都可以工作。
所以我尝试了:
$this->requestAction('/sites/actionwhichdoesntexist/option1');
我收到一条错误消息,指出该操作不存在。
我真的需要使用 requestAction,因为我有一个模型/控制器,并且此操作通常是测试资源是否仍然存在。我想使用 requestAction 来顺利处理“请求”方面,以便我构建更强大的东西:
if(empty($this->request->params['requested']))
$this->redirect(array('controller'=>'proxies', 'action'=>'index', 'admin'=>true));
else
return true;
我尝试了 2.4.1 和 2.5,没有任何反应,没有输出,即使我在操作中添加了一个 'die()'。
【问题讨论】:
-
2 件事 1) 可能您正在访问 不同 操作,或者 beforeFilter 或组件正在干扰 - 它取决于定义的路由和 beforeFilter/component 逻辑 2) 根本不要使用 requestAction 你描述的 - 将逻辑放在模型方法中并调用模型方法。
-
谢谢,确实是 beforeFilter 丢失了(需要记录)。但是我想要执行的操作中没有数据/sql相关的东西,这就是为什么我最初不想把它放在模型中。
标签: php shell cakephp dispatch