【问题标题】:Symfony2 inheritanceSymfony2 继承
【发布时间】:2023-03-17 17:34:01
【问题描述】:

由于我们不仅可以在实体中使用继承,还可以在表单中使用继承,因此我设计了以下结构:

实体

  • 班级人员
  • 类教授扩展人
  • 班级学生扩展人

表单类型

  • 类 PersonType
  • ProfessorType 类扩展 PersonType
  • StudentType 类扩展 PersonType

现在,我的问题出在控制器上。我不知道是否应该为所有子实体使用 person 控制器,或者是否应该为每个子类创建一个特定的控制器。

使用通用控制器对实体之间的共同逻辑有很大帮助,而且每次创建新子类时都不需要添加整个控制器,但另一方面,处理特定的控制器很复杂每个人的数据。例如,如果我加载一个“人”,然后我想编辑或显示它,我需要知道与之对应的表单类型和模板,但这在那个级别是不可能的。我应该使用嵌套的“if”来获取人的类,从而创建正确的表单类型和模板(硬代码)。这不会是“动态的”。

也许我可以使用不同的路线来解决它,但我想知道什么是解决这个问题的最佳(或至少是好的)解决方案?我也应该在控制器中使用继承吗?怎么样?

【问题讨论】:

    标签: inheritance symfony


    【解决方案1】:

    我们需要 [更多] 了解您的申请。

    无论如何,这实际上取决于控制器的用途。您可以定义一个共同的祖先控制器,然后是扩展前者的子控制器,您可以在其中重新定义您需要的方法。

    当然,每个动作都需要特定的路线。

    【讨论】:

    • 感谢您的回答@moonwave99。那么,使用我之前描述的结构,您会如何显示个人资料?你会使用一个名为“PersonController”的独特控制器和一个名为“showAction”的动作,然后加载这个人并定义关于它是教授还是学生的 TWIG 模板?或者您会创建两个特定的控制器(一个用于学生,另一个用于教授)?当我需要编辑它时怎么办? (使用不同的表单类型)
    猜你喜欢
    • 2015-08-06
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 2014-09-17
    • 2012-02-04
    相关资源
    最近更新 更多