2014-10-31 40 views
1

我是Symfony的新手,希望尽早使用最佳做法。我的代码下面的作品,但它感觉有点肮脏。Symfony 2.5&twig:如何清理这段代码?

我担心,如果我在这里写的代码太多。也许我想念一些我还不知道的Symfony-background-magic。下面的细节。

你会改变什么(为什么)?我感谢每一个建议,成为一个更好的开发者。提前致谢!

的routing.yml

items_edit: 
    path:  /items/edit/{id} 
    defaults: { _controller: myBundle:items:edit, id: null } # null = if not set? 
    requirements: 
    id: \d+ 

ItemController.php

我一定要通过$item或者是其他的数据无论如何gettable通过树枝?

public function editAction($id, Request $request) { 
    $em = $this->getDoctrine()->getManager(); 
    $repo = $em->getRepository('ItemsRepo'); 
    $item = $repo->find($id); 
    $form = $this->createForm(new ItemFormType(), $item); 

    if ($request->isMethod('POST')) { 
     $form->handleRequest($request); 
     if ($form->isValid()) { 
      $em->persist($item); 
      $em->flush(); 

      $this->get('session')->getFlashBag()->add('info', 'saved.'); 
      return $this->redirect($this->generateUrl('items_list')); 
     } 
    } 

    return $this->render('edit.html.twig', array(
     'form' => $form->createView(), 
     'item' => $item // !!! 
    )); 
} 

edit.html.twig

我必须补充{id: item.id}这里?

{% block content %} 
    <form action="{{ path('items_edit', {id: item.id}) }}" method="POST" {{ form_enctype(form) }}> 
     {# ... custom stuff ... #}  
    {{ form_end(form) }} 
{% endblock %} 
+1

http://codereview.stackexchange.com/ – FoxMcCloud 2014-10-31 18:33:59

+0

@ChaseC很好,谢谢! – 2014-10-31 18:36:19

+1

@ Mr.B。什么是'parentId'? – xurshid29 2014-10-31 19:20:41

回答

1

id: null在你的路线\d+的要求也没用,因为你实际上编辑现有的实体,你最好将其删除; $em->persist($item);也是不必要的,因为你已经在创建时保存并刷新了它,这次你不需要再次保存,只需刷新它即可。通过$item形成什么,如果你想向用户显示一些信息,如“编辑带有SOME_TITLE标题的项目”,或者如果有一些图像字段想要显示缩略图..,你可以通过它和retreive字段值,它是u到你..补充说明,/items/edit/{id}是不是很漂亮,平时它就像/items/{id}/edit/items/{id}/delete做...