在CakePHP3.6中,如何将另一个控制器的功能调用到另一个控制器中?

时间:2018-09-08 15:00:43

标签: cakephp-3.0 cakephp-3.x

我正在为我的项目使用 CakePHP3.6 。我在“选项”控制器中创建了以下功能:

public function getValue($id = null){ 
$options=$this->Options->find()->where(['id'=>$id])->first();
return $options->value;  
}

然后我将该函数调用为另一个控制器(任何xyz控制器)的函数,如下所示:

$r = $this->Options->getValue(1);

现在我收到错误消息“未知方法“ getValue””。

我对CakePHP3.2遵循相同的过程,效果很好。因此,请帮助我,如何为CakePHP3.6调用另一个控制器的功能?

2 个答案:

答案 0 :(得分:1)

您应该从不从另一个控制器中的另一个函数调用函数,我非常怀疑这样做是否如3.2所示。该函数看起来非常像应该在OptionsTable中,而不是OptionsController中。您唯一需要做的更改是在函数体内,它只会是$this->find(),而不是$this->Options->find()

答案 1 :(得分:-1)

class FirstController extends AppController
{
public function getValue($id = null){ 
  $options=$this->Options->find()->where(['id'=>$id])->first();
  return $options->value;  
}
}

class SecondController extends AppController
{
public function anotherAction($id = null){
 $anotherController =  new \App\Controller\FirstController();  
 $r = $anotherController->getValue($id) ;   
}
}