2013-08-07 3 views
1

저는 심포니 2를 사용하고 있으며, 많은 필드가있는 폼이 있습니다. 그 중 하나는 비디오라고합니다. 업데이트 양식에서 해당 필드를 제거 할 수 있지만 삽입 양식에서는 삭제할 수 있습니까?업데이트 폼에서 필드 제거하기 엔티티 (Symfony2)

(양식) YoutubepostType.php는 :

$builder->add('tituloVideo') 
      ->add('descripcionVideo') 
      ->add('tagsVideo') 
      ->add('video', 'file', array('required' => false)); 

고급에 여러분 모두 감사합니다.

+1

가장 쉬운 방법은 템플릿의 필드를 숨기는 것입니다. 엔티티 자체를 검사하여 실제로 수행하려는 경우 양식에 리스너를 추가해야합니다. http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html – Cerad

+0

Ok, Cerad, 감사합니다. 당신의 응답. – cmaciasg

+0

내 경험에 의하면 양식 필드가 서식 파일에 정의되어 있지 않으면 양식 렌더러는 기본적으로 양식의 끝에 다시 추가합니다. 따라서 템플릿에서 단순히 숨길 수는 없습니다. Cerad는 Symfony에 대해 내가 생각하는 것보다 100 만 배는 더 많이 알고 있기 때문에 그가 제안하고있는 것이 아닌지 확실하지 않지만 작동 할 것이라고는 생각하지 않습니다. –

답변

0

컨트롤러가 모든 양식 필드를 직접 정의하는 경우 기본 입력란을 정의한 후 if 문을 추가하여 video 필드를 추가하기 전에 업데이트가 아닌지 확인하십시오.

$builder->add('tituloVideo') 
    ->add('descripcionVideo') 
    ->add('tagsVideo'); 
if($myMethod != 'update') { 
    $builder->add('video', 'file', array('required' => false)); 
} 

그러나 이미 form Collection of fields 다음 필드가 이미 폼 빌더 객체에 정의 된 사용자 정의하고 당신이 당신의 컨트롤러에서이 컬렉션을로드하는 가정, 그 경우에 당신은 그것을 제거 할 것 :

이 필드는 관련 기관에서라면
$form = $this->createForm(new MyCollectionType(), $entity); 
if($myMethod == 'update') { 
    $form->remove('video'); 
} 

먼저 개체를 얻을 거기에서 제거 :

$form->get('myEntityName')->remove('myFieldName') 

참고 : 당신은 사람이 있다면 양식 템플릿을 만들어서 템플릿에 숨기 만하면됩니다. if 문) 안에 설정, 그것은 작동하지 않습니다 문제가 해결되지 않도록

{% if $myMethod == 'update' %} 
    {{ form_row(form.video) }} 
{% endif %} 

양식 렌더러는 단지) ​​내 경험 (어쨌든 형태의 말미에 추가합니다.