2016-09-19 6 views
1

Symfony версия 3.1.3Symfony3: Почему выбор представить ключевой текст вместо его значения

Я генерируя список вариантов, из базы данных, как сильфон и она отлично работает.

class ClassType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('class', 
         EntityType::class, 
         array('class'   => 'PIE10Bundle:Classes', 
          'expanded'  => false, 
          'multiple'  => false,)); 
     // some other form elements 
    }  
} 

на веб-странице он дает HTML Выберите, как показано ниже,

<select name="class[class]" id="class_class"> 
    <option value="6">1A</option> 
    <option value="7">4C</option> 
</select> 

и в контроллере, я получаю представленные данные и отлаживать его, как показано ниже,

if($form->isSubmitted() && $form->isValid()) 
{ 
    $cName = $form['class']->getData(); 
    echo $cName; 
    die; 
} 

Мои результатом является 1A или 4C (в зависимости от выбора), но не 6 или 7. Я ожидаю получить значения списка выбора, но не его ключевой текст.

Интересно, как это происходит и как исправить это, чтобы получить значение. Далее у меня есть другой список выбора в той же форме, но он представляет ожидаемое значение.

Благодаря

+0

ли '$ CNAME = $ форма-> Get ("класс") -> GetData();' возвращает тот же результат? –

+0

да он возвращает тот же результат (что означает 1A или 4C) – mapmalith

ответ

2

попробовать с

$cName->getId() 

Я полагаю, что $cName является istance из PIE10Bundle:Classes субъекта (попробуйте демпинг get_class($cName)) и эхо печати название потому, что реализуется как метод __toString.

Надеется, что это поможет

+0

Спасибо за это :)). '$ cName-> getId()' дает ожидаемые значения 6 и 7 – mapmalith