在CakePHP中将组件变量传递给控制器

3

我该如何将在CakePHP组件中声明的变量传递给控制器?我似乎无法解决这个问题。


你有一些可以发布的代码吗? - dm03514
翻译以下与编程有关的内容,从英文到中文。只返回翻译的文本:不解释所需内容,已有的内容,所希望的功能......糟糕的问题。非常糟糕... - Bird87 ZA
2个回答

6
您可以通过多种方式完成此操作。基本上,您只需要从控制器调用所需的组件函数并返回值即可:
//In controller
$alteredData = $this->MyComponent->doSomethingWithData($data);

//In component
//You can also pass $data by reference if you want to alter it directly.
public function doSomethingWithData($data){
    //alter data in some way
    return $newData;
}

根据文档,组件直接可以访问控制器,因此您可以从组件中调用控制器方法。
//In component
private $Controller;
public function initialize($controller){
    $this->Controller = $controller;
}

public function doSomethingWithData($data){
    //alter data in some way
    $this->Controller->set('data', $data);
}

请确保加载组件,例如:public $components = array('MyComponent'); 否则 $this->Controller->set('data', $data); 将无法正常工作。 - Faiyaz Alam
有没有关于如何在cakephp 3.x中完成这个任务的更新? - Battousai

0

在cakePHP 3.x中(可能只有> 3.5)

// in Component
$this->getController()->set('var', $var);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接