2013-08-15 5 views
0

현재 사용자의 모든 친구를 나열하는 엔티티 유형 양식이 있습니다. 예 : 새 그룹을 만드는 데 사용됩니다. 이제 동일한 양식을 사용하여 동일한 그룹에 사용자를 추가하려는 경우 Choice 필드는 아직 그룹에없는 현재 사용자의 모든 친구를 표시해야합니다. 난 그냥 그룹에 이미있는 옵션 (사용자)를 제거하는 양식 이벤트를 사용하여 생각.symfony2 선택 (엔티티) 양식에서 옵션을 동적으로 제거하십시오.

내 리스너는 다음과 같습니다 클래스 FriendSelectListener이 EventSubscriberInterface {

public static function getSubscribedEvents() { 
    // Tells the dispatcher that we want to listen on the form.pre_set_data 
    // event and that the preSetData method should be called. 
    return array(FormEvents::PRE_SET_DATA => 'preSetData'); 
} 

public function preSetData(FormEvent $event) { 
    $betRound = $event->getData(); 
    $form = $event->getForm(); 
    $groupForm = $form->get('userGroup'); 
    $usersForm = $groupForm->get('users'); 

    foreach($betRound->getUserGroup()->getUsers() as $user){ 
     if($usersForm->has($user->getId())){ 
      $usersForm->remove($user->getId()); 
     } 
    } 
} 

}

를 구현하지만 내 테스트에서 나는 ID를 가진 사용자를 제거하기 때문에 나는 그것을 렌더링 할 수 없습니다 2 다음

키 "2"유형 의 (ArrayAccess와) 객체의 "심포니 \ 구성 요소 \ 양식 \ FO를 : 렌더링하는 동안 다음과 같은 오류 메시지가 rmView는 "라인에서 /var/lib/stickshift/1ed1210eec124c179c45aac4ad484afd/app-root/data/269891/src/Strego/UserBundle/Resources/views/Form/selectFriends.html.twig 에 존재하지 않는 5

는 업데이트 :이가 내 생각과 관련이있을 수 : 만 폼 요소가 아니라 선택을 제거 같은 {ID에 대한 %, 선택의 %의 선택} 나를 위해

{% set user = choice.data %} 
    <label> 
    <div class="people-list people-choose unselected" style="width:270px;"> 
    <img src="{{ user.profilePic | imagine_filter('profile_thumb') }}" class="img-polaroid" alt="{{ user.nickname }}"> 
    {#<img src="{{ asset('bundles/stregoapp/img/profile-thumb-90x90.png') }}" alt="Profilbild" class="img-polaroid">#} 
    <p>{{ form_widget(form[id]) }}&nbsp;<span class="label">einladen</span></p> 
    <h3>{{ user.nickname }}</h3> 
    <h3><small>{{ user.firstName }} {{ user.lastName }}</small></h3> 
    </div> 
    </label> 

{% endfor %} 

것 같습니다.

+0

내가 가장 좋은 건 두 폼에 리스너를 중지하고 대신 실제 사용자 그룹 요소를 추가하는 것입니다 생각 기존의 것을 수정하려는 시도. 양식 구성 요소는 신비한 방식으로 작동합니다. – Cerad

+0

양식 요소 만 제거했지만 "선택 사항"자체는 제거하지 않은 것 같습니다. 내 견해와 관련이있을 수 있습니다. 아픈 업데이트 내 질문 – m0c

답변

0

나는이 문제를 발견했다. 그것은 실제로 나의 견해였다. 마자 옵션을 통해 반복하는 중지하지만 일하는 내 폼 요소의 자식 elemts을 사용 :

{% for child in form %} 

    {% set user = choices[child.vars.value].data %} 

    <label> 
    <div class="people-list people-choose unselected" style="width:270px;"> 
    <img src="{{ user.profilePic | imagine_filter('profile_thumb') }}" class="img-polaroid" alt="{{ user.nickname }}"> 

    <p>{{ form_widget(child) }}&nbsp;<span class="label">einladen</span></p> 
    <h3>{{ user.nickname }}</h3> 
    <h3><small>{{ user.firstName }} {{ user.lastName }}</small></h3> 
    </div> 
    </label> 


{% endfor %}