2013-07-03 2 views
9

1) 심포니 방법이 있습니까의 가능한 선택하세요?심포니 2 : 선택 필드 형식

내가 예를 들어, 일부 선택 필드, 기본 형태 (데이터베이스에 매핑되지 않음)를 가지고

: 나는 어떻게

$builder->add('civility', 'choice', array('choices'=> array('m' => 'M.', 'mme' => 'Mme', 'mlle' => 'Mlle'))) 

- 양식 후 submited했다 - 액션에서을 (또는 , 더 나은 템플릿에서), 제출 된 값 대신 옵션의 레이블 값을 검색 할 수 있습니까?

내가 $form->get("civility")->getChoiceLabel($form->get("civility")->getData())

같은 대해 생각했다 (이 경우, 나는 대신에 "M"의 템플릿에 "M."를 렌더링 할 수 있도록하려면)하지만 찾지 못함 (Symfony1에는 그런 것이 있었지만) 문서에서 이와 비슷한 것. 정말하지 않으면

2)를 만들 수있는 가장 좋은 방법은 무엇입니까?

private $choices = array("civility" => array('m' => 'M.', 'mme' => 'Mme', 'mlle' => 'Mlle')); 
static public function getChoiceLabel($choice_value, $field_name) 
{ 
    return self::$choices[$field_name][$choice_value]; 
} 

static public function getChoices($field_name) 
{ 
    return self::$choices[$field_name]; 
} 

을 그러나 문제는 우리가 사용하는 가정하지 않을 것입니다 :

따라서, 나는 ... 형태 등으로 사용되는 데이터 클래스에, 그렇게 몇 가지 방법을 만드는 방법에 대해 생각했다 나뭇 가지 서식 파일의 정적 메서드 (정적, 양식 생성, buildForm 메서드에서 사용할 수 있도록 일부 코드를 복제 할 수 있도록합니다).

+0

당신이'$ 양식 [ '정중'] 인쇄 할 때'당신이 당신이 찾고있는 레이블을 찾을 수 없습니다 ? 내가 찾고 있었는지, 즉 정확히 전에 필드를 인쇄하고''$ form' –

답변

12

사용자가 액세스 할 수있는이 같은 레이블과 그 값을 choses :

$form->get('civility')->getConfig()->getOption('choices'); 

자세히보기 : Symfony\Component\Form\FormConfigInterface::getOption()

+0

완벽한에 createView'를 호출 한 후보십시오! 그것은 어떻게 요 보통 그런 물건을 찾을 수 있습니까 .. 심지어 API에 문서에서 찾을 꽤 어렵다? – Bonswouar

+0

내 IDE (phpstorm)의 자동 완성 기능. 나는 그 클래스의 모든 메소드를 찾고 필요한 것을 찾았습니다. 물론 ofcourse API 설명서도 도움이됩니다. – Hast