【发布时间】:2014-08-20 10:36:18
【问题描述】:
我想知道如何从 Symfony2 中的另一个控制器内部访问控制器的功能。事实上,我有两个控制器:“EventgroupeController”和“GroupeController”。在控制器“EventgroupeController”的代码中,我把指令放在下面:
return GroupeController::AfficheGroupeAction();
但是当我运行代码(或者说我正在开发的项目)时,它会在 Symfony2 中显示此错误消息:
ContextErrorException: 运行时注意事项:不应静态调用非静态方法 Ikproj\GroupeBundle\Controller\GroupeController::AfficheGroupeAction(),假设 $this 来自 C:\wamp\www\Wkayet_project\PFESymfony2\src\ 中的不兼容上下文Ikproj\GroupeBundle\Controller\EventgroupeController.php 第 104 行
查看此链接后:How to access a different controller from inside a controller Symfony2 为了了解如何从 Symfony2 中的控制器内部访问不同的控制器,我修改了文件 services.yml 的内容如下:
parameters:
# ikproj_groupe.example.class: Ikproj\GroupeBundle\Example
services:
# ikproj_groupe.example:
# class: %ikproj_groupe.example.class%
# arguments: [@service_id, "plain_value", %parameter%]
controllerservice:
class: Ikproj\GroupeBundle\Controller\GroupeController
然后,我将指令:return GroupeController::AfficheGroupeAction(); 替换为以下行:
$yourController = $this->get('controllerservice');
$yourController1 = $yourController::AfficheGroupeAction();
return $yourController1;
但我仍然看到此错误消息:
ContextErrorException: 运行时注意事项:不应静态调用非静态方法 Ikproj\GroupeBundle\Controller\GroupeController::AfficheGroupeAction(),假设 $this 来自 C:\wamp\www\Wkayet_project\PFESymfony2\src\ 中的不兼容上下文Ikproj\GroupeBundle\Controller\EventgroupeController.php 第 106 行
所以,我的问题是:我该如何解决这个问题以及如何从控制器“EventgroupeController”内部访问控制器“GroupeController”的函数 AfficheGroupeAction()?
【问题讨论】:
-
这是
AfficheGroupeAction静态方法吗??因为错误表明它不是。 -
不,它不是静态方法,顺便说一下,这是函数 AfficheGroupeAction 的标题: public function AfficheGroupeAction(){ 你知道如何调用非静态方法吗?功能??
-
为什么要在另一个控制器中调用它??如果您需要在此方法中执行某些操作,请将其移至服务,并在两个地方调用它
-
好吧,我必须这样做,因为在验证表单后,将立即显示组的网页。因此,我必须在另一个控制器中调用控制器的函数在 Symfony2 中。
-
ok..搞定了,请看页面底部的答案
标签: function symfony controller