其實我對將表達式傳遞參數的最佳方式感到困惑。據我所知,有三種方式:symfony2:表單注入依賴注入
要打開窗體類爲服務
要通過陣列選項參數傳遞
要通過的構造函數傳遞參數表格類別
什麼是最好的/最乾淨的方式?謝謝
其實我對將表達式傳遞參數的最佳方式感到困惑。據我所知,有三種方式:symfony2:表單注入依賴注入
要打開窗體類爲服務
要通過陣列選項參數傳遞
要通過的構造函數傳遞參數表格類別
什麼是最好的/最乾淨的方式?謝謝
在我看來:
對於我的大部分表格,我創建了一個單獨的表格類。當我需要使用預填充數據呈現表單時,我在我的控制器中加載實體,並在構建表單時傳遞該實體。舉例來說,如果我有一個名爲$用戶鏈接到註冊實體的實體,我將填充我的形式是這樣的:
$registration = $user->getRegistration();
$form = $this->createForm(new RegistrationType(), $registration, array());
然後我呈現在樹枝的$形式:
return $this->render(
'AcmeAccountBundle:Account:register.html.twig',
array('form' => $form->createView())
);
所以你說,如果我們需要記錄器例如它只是**更好**將窗體轉換爲服務。但是我認爲當從控制器調用表單時,只需通過構造函數或數組$ option就可以方便地傳遞參數:$ options:您不必將表單聲明爲您的服務文件,您沒有更新服務文件,每當你意識到你需要另一個依賴等... – smarber 2014-10-31 10:12:16
這只是我的意見。即使我必須修改服務聲明,我更喜歡乾淨的代碼。 控制器中的代碼較少=錯誤較少。下一步的改進是我不必修改控制器來更改表格中的示例:添加一些字段。我只需要覆蓋更簡單的服務,並且不要複製代碼(控制器)來執行此操作。在我的情況下,FormType作爲服務總是大而複雜,所以對我來說這是更好的解決方案。 – jamek 2014-10-31 13:22:42
我同意你的觀點,作爲一種服務,表單更獨立。 +1 – smarber 2014-10-31 13:48:22