CakePHP - call_user_func_array()丢失$ this-> request->数据?

时间:2014-10-10 09:14:29

标签: php cakephp

我需要动态调用Controller方法。为此我编写了以下代码:

if(isset($method['postParams'])) {
    foreach($method['postParams'] as $index => $param) {
        $this->request->data[ $index ] = $param;
    }
}

App::import('Controller', $method['controller']);
// get result
$method['controller'] = $method['controller'] . 'Controller';
$Controller = new $method['controller']();

try {
    if(count($method['params'])) {
        $varVal = call_user_func_array(array($Controller, $method['method']), $method['params']);
    } else {
        $varVal = call_user_func(array($Controller, $method['method']));
    }
} catch(Exception $e) {
    $varVal = $e;
}
$this->set($varName, $varVal);

现在我调试被调用的函数,看看 $ this-> request-> data NULL

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

为了完整起见,我会发布这个问题的答案,让任何有类似问题的人更容易找到解决方案。

代替:

$this->request->data

使用:

$Controller->request->data

在实例化 $Controller 对象之后