2013-02-25 1 views
0

페이지에서 볼 수있는 엔티티 필드가 여러 개 있습니다. 각 필드에 대해 한 번에 하나씩 아약스를 통해 편집 할 수 있습니다. 이 작업을 수행하기 위해 모든 필드에 대해 고유 한 컨트롤러를 구축하는 아이디어가 떠오르지 만 제대로 작동하지 않을 수 있으며 내가 시도하려는 작업에 적합한 솔루션인지 여부를 알 수 없습니다. 내 페이지 쇼 필드 : 내 컨트롤러에서symfony2가 필드 엔티티를 동적으로 만듭니다.

<div> 
<form class="ajax" action="{{ path('ajax_setSocial', { 'id': entity.id }) }}" method="post" {{ form_enctype(form) }}> 
    <div class="editor"> 
     {{ form_errors(form) }} 
     <div class="editLabel pls lti">{{ form_label(form.ragSocial) }}</div> 
     <div class="editField"> 
      <div class="ptm"> 
       {{ form_widget(form.ragSocial) }} {{ form_errors(form.ragSocial) }} 
      </div>  
      {{ form_widget(form._token) }} 
      <div class="mtm"> 
       <button class="btn btn-primary disabled save" type="submit" disabled>Save</button> 
       <button class="btn ann">Cancel</button> 
      </div> 
     </div> 
    </div> 
    </form> 
</div> 
<div> 
    <form class="ajax" action="{{ path('ajax_setSocial', { 'id': entity.id }) }}" method="post" {{ form_enctype(form) }}> 
    <div class="editor"> 
     {{ form_errors(form) }} 
     <div class="editLabel pls lti">{{ form_label(form.pIva) }}</div> 
     <div class="editField"> 
      <div class="ptm"> 
       {{ form_widget(form.pIva) }} {{ form_errors(form.pIva) }} 
      </div>  
      {{ form_widget(form._token) }} 
      <div class="mtm"> 
       <button class="btn btn-primary disabled save" type="submit" disabled>Save</button> 
       <button class="btn ann">Cancel</button> 
      </div> 
     </div> 
    </div> 
    </form> 
</div> 

:

public function setSocialAction(Request $request, $id) 
{ 
    $em = $this->getDoctrine()->getManager(); 
    $entity = $em->getRepository('MyBusinessBundle:Anagrafica')->find($id); 

    if (!$entity) { 
     throw $this->createNotFoundException('Unable to find Anagrafic entity.'); 
    } 
    $field = $request->get('field'); 
    $class = $field.'Type()'; 
    $form = $this->createForm(new $class, $entity); 
    $form->bind($request); 

    if ($form->isValid()) { 
     $em->persist($entity); 
     $em->flush(); 

     $response = new Response(); 
     $output = array('success' => true); 
     $response->headers->set('Content-Type', 'application/json'); 
     $response->setContent(json_encode($output)); 

     return $response; 
    } 

$ 클래스 = $ field.'Type();
$ form = $ this-> createForm (새 $ class, $ entity); 이러한 코드 라인
나는 양식 필드를 생성하지만 문자열로 변환되고 있으며, 내가 오류가 있기 때문에 작동하지 않습니다 동적 클래스 만들려고 :

Fatal error: Class 'ragSocialType()' not found 

을하지만 클래스입니다! 또한 최상위 파일에 호출됩니다 .. 내가 설명하기를 바랍니다, 나는 더 나은 방법을 따라 어떤 조언을 받아들입니다!

+0

ragSocialType을 게시하시기 바랍니다. – Lighthart

+0

부적절합니다! 변수에 이름을 짓지 않고 ragSocialType()을 직접 작성하면 올바르게 작동합니다. – Lughino

답변

1
$class = $field.'Type'; //remove the() 
$form = this->createForm(new $class, $entity); 
+0

동일한 오류를 반환합니다! 변수 $ 클래스를 테스트하려면 : '$ class = 'ragSocialeType'; $ form = this-> createForm (새 $ class, $ entity); ' 그래도 작동하지 않습니다! 항상 같은 오류를 반환합니다! 이해가 안됩니다! 정상적인 클래스 PHP에서 그것은 작동합니다! – Lughino

+1

그런 다음 $ class = "mybundle \ form \"클래스를 빌드 할 때 정규화 된 네임 스페이스를 사용하십시오. $ field. '유형'; – user1452962

+0

감사! 그래서 그것은 작동합니다! – Lughino

관련 문제