使用受保护方法的Symfony解决方法

时间:2017-06-23 12:34:48

标签: symfony

背景:symfony3

我刚刚发现控制器中的redirectToRouteaddFlash方法在symfony中受到保护。我有一个单独的行动类。

namespace AppBundle\Action;

class Base {

    public function __construct($controller) {
        $this->controller = $controller;
    }
}

正如您所见,基本动作类需要一个控制器。基本上它是合乎逻辑的,因为动作类是控制器的一部分,应该可以访问它的所有方法。但是,由于受到保护,我无法致电$this->controller->addFlash。如果它受到保护,那么可能有一些原因。我找不到它了。你可以请你告诉我如何改变我的动作类,以便它可以使用控制器方法。

关于从控制器扩展操作的变体不适合我,因为我在主控制器中有其他功能。它以适当的方式配置。

更新:我的目标是按责任分配控制器功能。我发明了一个动作类。我的结束代码如下所示:

public function editAction() {
        $instance = new \AppBundle\Action\MyController\Edit($this);
        return $insance->run();
    }

在这种情况下,我保持控制器清洁,而不是冗长。

1 个答案:

答案 0 :(得分:0)

Here是Symfony Controller Trait的link,如果你真的想以这种方式工作,你可以复制它。

但是既然你要将一个完整的symfony控制器注入你自己的控制器中,你最好还是扩展。这里使用注入来按其ID注入单独的服务。