2014-03-27 4 views
2

내가 폼 빌더가 이름 :심포니 2 엔티티 양식 필드가

 private function createTaskForm($id) { 

     $form = $this->createFormBuilder() 
       ->setAction($this->generateUrl('admin_user__tasks_update_', array('id' => $id))) 
       ->setMethod('put'); 
     $form 
       ->add('tasks', 'entity', array(
        'class' => 'WorksheetsWorksheetsBundle:Task', 
        'property' => 'name', 
        'expanded' => 'true', 
        'multiple' => 'true' 
         ) 
     ); 
     return $form->getForm(); 
    } 

을하지만 난 컨트롤러에서 매일 아이를 얻을 필요하지만, 나는이 작업을 수행 할 수있는 방법을 잘 모릅니다 심포니이 발생하기 때문에 (아이 이름을 잘 모릅니다) 확인란

<input type="checkbox" id="form_tasks_27" name="form[tasks][]" value="27" /> 

모든 필드에 동일한 이름이 사용되며 컨트롤러에서이 이름을 어떻게 변경할 수 있습니까?

+0

왜 모든 어린이를 입양하고 싶습니까? 자바 스크립트 작업을 위해? 더 많은 정보를 제공하면 더 쉬울 것입니다 ... 그러나 빠른 답을 위해서는 PHP checkbox가 모든 체크 박스 값을 포함하는 배열을 반환합니다 ... –

+0

보기에 보내기 전에 일부 체크 박스를 확인해야합니다. 모든 아이를 가져와야합니다. 값을 다른 varible과 비교합니다. true 인 경우에는 checked 속성을 선택하고 그렇지 않으면 no. – user3468055

+0

그래서 직접 변수를 내부에 가지고 있다면 쿼리 빌더 –

답변

0

이것은 Symfony의 작동 방식이 아닙니다. Symfony 프레임 워크를 구축하면 양식 (보기)과 기본 데이터 (모델) 간의 매핑이 설정됩니다. 데이터 작업. Symfony는 데이터를 양식에 매핑하고 자동으로 다시 매핑합니다. 폼에 기본값을 설정하려면 폼의 뷰 요소 자체가 아닌 기본 폼 데이터를 수정해야합니다.

기본적으로 양식의 기본 데이터는 연관 배열입니다. 그래서 당신은 IDS 2, 3, 5로 작업을 확인하기 위해 방법의 마지막 행하기 전에 같은 것을 할 수있다 : 그 방법의 기본 업무 ID의 하드 코딩 실제로 권하고 싶지 않다

... 
$em = $this->get('doctrine)->getManager(); 
$taskRepo = $em->getRepository('WorksheetsWorksheetsBundle:Task'); 
$data['tasks'][] = $taskRepo->findOneById(2); 
$data['tasks'][] = $taskRepo->findOneById(3); 
$data['tasks'][] = $taskRepo->findOneById(5); 
$form->setData($data); 
... 

주 이렇게.

또한 Symfony를 최대한 활용하려면 일반적으로 양식을 특정 개체 클래스에 매핑하도록 설정해야합니다. 이 경우 많은 작업이있는 엔티티가되며 데이터 멤버 '작업'에 해당하는 추가 및 제거 방법이 있습니다. 엔터티를 폼의 기본 데이터로 사용하면 엔터티에 속한 모든 작업이 폼에서 자동으로 검사되고 엔터티의 작업이 $ form-> handleRequest()에 의해 자동으로 업데이트됩니다. 다시 말하지만, 기본값을 설정해야하는 경우 엔터티를 데이터로 양식에 전달하기 전에 엔터티를 설정하여 기본값을 설정할 수 있습니다. 값이 기본값이 아니지만 엔티티에 이미 속한 실제 값이면 아무 것도 할 필요가 없습니다. 이 방법을 사용하는 것이 좋습니다.