其实我对将表达式传递参数的最佳方式感到困惑。据我所知,有三种方式: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