【问题标题】:passing component variables to controller in cakePHP在 cakePHP 中将组件变量传递给控制器
【发布时间】:2012-01-16 18:31:22
【问题描述】:

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

【问题讨论】:

  • 你有一些可以发布的代码吗?
  • 没有解释需要什么,你有什么,你希望它做什么......不好的问题。坏坏坏...

标签: cakephp controller components


【解决方案1】:

您可以通过多种方式做到这一点。基本上,您只需从控制器调用所需的组件函数并返回值:

//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;
}

Per the documentation,您还可以从组件直接访问控制器,因此您可以从组件调用控制器方法。

//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); 不起作用
  • 在 cakephp 3.x 中是否有任何更新
【解决方案2】:

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

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

【讨论】:

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