2012-11-14 80 views
1

我們不僅可以在實體而且在形式使用繼承,我設計了以下結構:Symfony2的繼承

實體

  • 類人
  • 教授級擴展人
  • 班級學生延伸人

FormTypes

  • 類PersonType
  • 類ProfessorType延伸PersonType
  • 類StudentType延伸PersonType

現在,我的問題是在控制器中。我不知道我是否應該爲所有子實體使用人員控制器,或者是否應該爲每個子類創建一個特定的控制器。

使用通用控制器可以幫助很多實體之間通用的邏輯,而且每次創建新的子類時都不需要添加整個控制器,但另一方面,它很複雜處理每一個的具體數據。例如,如果我加載一個「人」,然後我想編輯或顯示它,我需要知道哪些表單類型和模板與它相對應,但是在這個級別上這是不可能的。我應該使用嵌套的「if」來獲取人員的類,因此創建正確的表單類型和模板(硬編碼)。這不會是「動態的」。

也許我可以解決它使用不同的路線,但我想知道什麼是最好的(或至少是一個好的)解決這個問題?我是否也應該在控制器中使用繼承?怎麼樣?

回答

2

我們需要更多地瞭解您的應用程序。

無論如何,它真的取決於控制器的目的。您可以定義一個共同的祖先控制器,然後定義擴展前者的子控制器,您將在其中重新定義所需的方法。

當然,您需要爲每個操作指定特定的路線。

+0

感謝您的回答@ moonwave99。所以,就我之前描述的結構而言,你會怎麼做才能展示個人資料?您是否會使用名爲「PersonController」的獨特控制器進行名爲「showAction」的操作,並在那裏加載此人並定義TWIG模板,以確定它是教授還是學生?或者你會創建兩個特定的控制器(一個爲學生,另一個爲教授)?什麼時候我需要編輯它? (使用不同的表單類型) – Izzy