2009-08-14 3 views
1

Symfony 1.2를 실행하고 객체 도우미를 활용하여 편집 가능한 필드를 양식 외부에 생성합니다. 객관식 선택 상자 (input_in_place_editor_tag 또는 Ajax.InPlaceCollectionEditor)와 비슷한 인라인 편집 태그를 만들 수있는 symfony 또는 scriptalicious 지름길이 없기 때문에 object_select_tag와 multiple 옵션을 true로 설정하여 다음과 같은 선택 상자를 만듭니다.기본적으로 object_select_tag를 사용하여 여러 옵션을 선택하십시오.

<?php  
    echo object_select_tag($user->getsfGuardPermissions(), 'getId', array (
'include_blank' => false, 
'related_class' => 'sfGuardPermission', 
'peer_method' => 'doSelect', 
'text_method' => '__toString', 
'control_name' => 'user_customer_permissions_'.$user_customer->getId(), 
    'multiple' => true 
)); 
?> 

폼이 변경되면 observe_field를 호출하여 Ajax를 통해 개체를 업데이트합니다. 그러나

문제는 $ user-> getsfGuardPermissions()가 sfGuardPermission 객체의 배열을 반환한다는 것입니다. 기본적으로 선택되지 않습니다.

일부 테스트 후에 배열 대신 하나의 sfGuardPermission 객체 만 전달하면 적절한 옵션이 선택된다는 것을 알았습니다. 이것은 Symfony의 한계입니까, 아니면 다른 방법입니까? symfony가 기본적으로 여러 옵션을 선택할 수 없다면 'multiple'옵션을 포함한다고 믿기 어렵습니다.

ObjectHelper.php에서 함수가 배열을 기대하지 않는다는 것을 알 수 있습니다. 기본적으로 여러 객체를 선택하려면 어떻게합니까?

답변

1

object___select ___ tag()는 선택한 객체 값에 해당하는 정수 배열을 허용합니다. 예 :

<?php 
    echo object_select_tag(array(4, 5), 'getId', array (
'include_blank' => false, 
'related_class' => 'sfGuardPermission', 
'peer_method' => 'doSelect', 
'text_method' => '__toString', 
'control_name' => 'user_customer_permissions_'.$user_customer->getId(), 
    'multiple' => true 
)); 
    ?> 

기본적으로 4와 5 값을 선택합니다. 설명서에는 $ object object select tag (symfony API)이라는 첫 번째 매개 변수가 나열되어 있으므로 이상적인 것은 아닙니다. 그래서이 문제를 해결할 수 있다고 생각합니다. 다중 플래그가 true로 설정되면 함수는 $ object 매개 변수에 대한 객체 배열을 허용하는 것이 가장 이상적입니다. 이것은 다른 도우미 기능과 일치합니다.

관련 문제