欢迎,
我在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的项目中,他们只返回对象。
我遇到类名,目录名和使用它的问题。
有人可以帮忙吗?