Symfony 2.7和Twig中的选项渲染


Symfony 2.7 and rendering of choices in Twig

试图在Symfony 2.7.0中呈现下拉列表,但在视图中呈现选项时遇到了一些问题。

$form = $this->createFormBuilder(null)
->add('timespan', 'choice', array(
     'choices' => array(90 => "3 months", 30 => "1 month")
 ))
 ->getForm();
 ...
 return array(
    'form' => $form->createView(),      
 );
...

在此之后执行var_dump将显示值:

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

但是当在视图中这样渲染时:

{{ form_widget(form.timespan, {'class': 'span2'}) }}

选择框变为空。

<select id="form_timespan" name="form[timespan]" required="required" class="span2"></select>

你知道为什么会发生这种情况吗?我是不是错过了什么?

问题显然在Twig中。您可以通过编辑表单主题来调试它,以查看有哪些值和期望值。主题可在以下网址找到:

vendor/symfony/symfoy/src/symfony/Bridge/Twig/Resources/views/Form/bootstrap__layout.html.twitch

(或者您可以将Symfony配置为使用自己的。)

您正在寻找专门用于渲染此内容的{% block choice_widget %}

在这种情况下,您似乎忘记为HTML类使用attr键:

{{ form_widget(form.timespan, {'attr': {'class': 'span2'}}) }}

您在呼叫中忘记了attr密钥:

{{ form_widget(form.timespan, {'attr': {'class': 'span2'}}) }}