SF2服务和学说

时间:2016-02-20 13:07:50

标签: symfony

欢迎,

我在sf2(2.4-2.8)中创建了一些项目。代码质量不同...... 我读了几篇文章。现在我尝试最小化控制器中的代码。我使用Repository,Services等。当我使用服务时,不要注入doctrine,转发对象。在控制器中初始化表单,对象,服务,检查验证表单并将值返回到模板。但我有功能,我必须在循环中生成查询或我需要很多查询,不能合并为一个。 我的结构文件夹:Controller,Services,Repository,Entity,Form,Resources。 我怎样才能调和这一切?最小控制器,服务中的功能和实体库。

示例丑陋的代码控制器:

/**
   * @Route("/add", name="controller_admin_page_add")
   * @Template()
   * @param Request $request
   */
  public function addAction(Request $request) {
    $page = new Page;
    $em = $this->getDoctrine()->getManager();
    $form = $this->createForm(new FormPage, $page);
    $form->handleRequest($request);

    if ($request->isMethod("POST") && $form->isValid()) {
      $links = $em->createQuery("...")->getResult();
      foreach($link as links){
         if(...){
           $checkLink = $em->createQuery("...")->getResult();
           ...
         }
       .....
      }
      $em->persist($page);
      $em->flush();

      return $this->redirectToRoute('controller_admin_page_index');
    }

    return array(
        'form' => $form->createView()
    );
  }

示例更好的代码:

/** ...
  */
  public function addAction(Request $request) {
    $page = new Page;
    $em = $this->getDoctrine()->getManager();
    $form = $this->createForm(new FormPage, $page);
    $form->handleRequest($request);

    if ($request->isMethod("POST") && $form->isValid()) {
      $generateUrl = $this->container->get('Url');
      $generateUrl->checkLink($page);
      $generateUrl->getUrl();

      $em->persist($page);
      $em->flush();

      return $this->redirectToRoute('controller_admin_page_index');
    }

    return array(
        'form' => $form->createView()
    );
  }

这是问题。

该功能接管服务。在“干净的架构”中,我应该将一个对象/对象传递给服务。但我必须循环发送查询。

在我看来,我需要在项目中使用2种类型的helper。 1)。通过setter获取对象/对象并返回已处理的数据。班级无权使用该学说。 2)获取参数,创建查询并返回已处理的数据。班级可以使用该学说。

在我拥有Repository的项目中,他们只返回对象。

我遇到类名,目录名和使用它的问题。

有人可以帮忙吗?

0 个答案:

没有答案