Symfony / MVC写入瘦控制器

时间:2015-04-18 14:36:29

标签: php symfony model-view-controller controller

我对Symfony 2控制器的构造有疑问。 当我想处理一个表单时,我创建了一个单独的Form处理程序来处理表单并在我的控制器中调用这个处理程序:

public function registerAction()
{
  $formHandler = $this->container->get('fos_user.registration.form.handler');
  $confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled');
  $process = $formHandler->process($confirmationEnabled);
  return new JsonResponse($process);
}

我是否还应该使用这种方法为仅包含业务逻辑且不验证表单的Controller创建Handler类?

e.g。当我将逻辑外包给一个单独的处理程序时,我的Controller注册确认操作将如下所示:

public function confirmAction($token)
{
    $formHandler = $this->container->get('acme.register_confirm.handler');
    $process = $formHandler->process($token);
    return new JsonResponse($process);
}

我将处理此服务的流程方法中的逻辑。

或者我应该让控制器中的逻辑而不是创建另一个单独的处理程序类?

如果采用这种方法,几乎​​所有控制器看起来都是一样的:

1)获取表单处理程序 2)调用处理程序的进程方法 3)返回响应

1 个答案:

答案 0 :(得分:1)

第二种方法是更好的做法。业务逻辑应始终位于Services之内。这样可以为您提供更好的separation of concerns,并使您的代码更具可重用性和可测试性。如果您致电您的服务handlerMyFancyBusinessLogicService完全取决于您。