2013-08-08 12 views
2

블로그 엔티티와 ManyToOne 엔티티 관계가있는 표준 FOS 사용자가 있습니다. 나는 응용 프로그램/콘솔을 사용했습니다symfony2는 현재 사용자를 입력 데이터로 추가합니다

/** 
* @ORM\ManyToOne(targetEntity="User", inversedBy="blog") 
* @ORM\JoinColumn(name="user", referencedColumnName="id") 
*/ 
private $user; 

는 생성 : 교리 : CRUD에게 명령을 기본 침전물 시스템을 생성 할 수 있습니다.

새 블로그 엔티티를 만들 때 작업을 수행 한 로그인 사용자를 삽입하고 싶습니다. 기본적으로 Symfony는 사용자가 엔티티에 연결된 사용자를 선택할 수있는 CRUD 코드를 생성합니다.

$user = $this->get('security.context')->getToken()->getUser(); 

이 최선의 조치가이 뭐죠 변경 : 나는이 security.context를 사용하여 로그인 한 사용자가 액세스 할 수있는 컨트롤러에서

$builder 
     ->add('name') 
     ->add('address') 
     ->add('facebook') 
     ->add('twitter') 
     ->add('user') 
    ; 

?

답변

4

오케이! 내 자신의 질문을 해결했다. (틀린 일이라면 나를 바로 잡아라. 나는 더 좋은 대답을 받아 들일 것이다.) 이 것은 그러나 잘 작동하는 것처럼 보입니다!

$ form-> isValid() 검사를 수행 한 후 사용자를 컨트롤러에 추가 할 수 있습니다. 여기 내 컨트롤러 기능예요.

public function createAction(Request $request) 
{ 
    $entity = new Blog(); 
    $form = $this->createForm(new BlogType(), $entity); 
    $form->bind($request); 

    if ($form->isValid()) { 
     $entity->setUser($this->get('security.context')->getToken()->getUser()); 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($entity); 
     $em->flush(); 
     return $this->redirect($this->generateUrl('blog_show', array('id' => $entity->getId()))); 
    } 

    return $this->render('ExampleBundle:Blog:new.html.twig', array(
     'entity' => $entity, 
     'form' => $form->createView(), 
    )); 
} 

이 작업을 수행하려면 양식 작성기에서 사용자를 제거해야합니다.