在CakePHP3.6中,如何将另一个控制器的函数调用到另一个控制器中?
In CakePHP3.6, how to call function of another controller into other controller?
我正在为我的项目使用 CakePHP3.6。我在选项控制器中创建了以下函数:
public function getValue($id = null){
$options=$this->Options->find()->where(['id'=>$id])->first();
return $options->value;
}
然后我将此函数调用到另一个控制器(任何 xyz 控制器)的函数中,如下所示:
$r = $this->Options->getValue(1);
现在我收到错误 'Unknown method "getValue"'。
我为 CakePHP3.2 遵循的相同程序,效果很好。所以请帮助我,如何将另一个控制器的函数调用到 CakePHP3.6 的另一个控制器的函数中?
你应该永远不要从一个控制器调用另一个控制器的函数,我非常怀疑这是否像 3.2 中所示那样工作。这个函数看起来很像它应该在 OptionsTable 中,而不是 OptionsController 中。您需要做的唯一更改是在函数体内,它将只是 $this->find()
,而不是 $this->Options->find()
.
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) ;
}
}
我正在为我的项目使用 CakePHP3.6。我在选项控制器中创建了以下函数:
public function getValue($id = null){
$options=$this->Options->find()->where(['id'=>$id])->first();
return $options->value;
}
然后我将此函数调用到另一个控制器(任何 xyz 控制器)的函数中,如下所示:
$r = $this->Options->getValue(1);
现在我收到错误 'Unknown method "getValue"'。
我为 CakePHP3.2 遵循的相同程序,效果很好。所以请帮助我,如何将另一个控制器的函数调用到 CakePHP3.6 的另一个控制器的函数中?
你应该永远不要从一个控制器调用另一个控制器的函数,我非常怀疑这是否像 3.2 中所示那样工作。这个函数看起来很像它应该在 OptionsTable 中,而不是 OptionsController 中。您需要做的唯一更改是在函数体内,它将只是 $this->find()
,而不是 $this->Options->find()
.
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) ;
}
}