【问题标题】:Can't use requestAction from Shell in Cakephp 2.5无法在 Cakephp 2.5 中使用来自 Shell 的 requestAction
【发布时间】: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


【解决方案1】:

如第一条评论所述,我应该检查 beforeFilter 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多