防止Symfony中的抽象控制器自动加载

时间:2018-07-24 15:24:30

标签: symfony sonata-admin

我有一个抽象控制器,该控制器具有函数getStatusAction,用于根据将作为参数的实体呈现状态。

abstract class HumanController extends CRUDController
{
    public function getStatusAction(Human $human)
    {

     // return new Response ...
    }
}

人类是实体类,但也是抽象的。例如,一个孩子就是男人。

所以我创建了一个ManController

class ManController extends HumanController
{
}

如果我现在在我的树枝模板中调用类似以下内容的getStatusAction

{{ path('path_to_man_controller_status_action', {'human' : '12'}) }}

发生错误,因为某些机制试图猜测我的参数是一个抽象类的人。但这无法实例化。

  

提供的Human类是抽象的,不能实例化

相反,我希望该机制从我的具体类(在这种情况下为Man)中加载实体。

是的,框架不知道类的含义,但是如何解决呢?我想拥有一个核心功能,该功能要对我所有属于人类班级的孩子的实体进行处理。我不想在子类中一遍又一遍地编写getStatusAction函数。

那么,是否至少有可能覆盖抽象类的函数定义(使用getStatusAction(Man $man)),但保留原始类的实现?

如果没有,是否可以关闭symfony自动实体加载机制以仅通过我的函数传递实体?

还有其他一些聪明的主意吗?谢谢。

0 个答案:

没有答案