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 框变为空。
<select id="form_timespan" name="form[timespan]" required="required" class="span2"></select>
知道为什么会发生这种情况吗?我错过了什么吗?
您在通话中忘记了 attr
键:
{{ form_widget(form.timespan, {'attr': {'class': 'span2'}}) }}
问题显然出在Twig。您可以通过编辑表单主题来对此进行调试,以查看出现的值和预期值。主题可以在以下位置找到:
vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_3_layout.html.twig
(或者您 can configure Symfony 使用自己的。)
您正在寻找 {% block choice_widget %}
专门用于呈现此内容。
在这种情况下,您似乎忘记了为您的 HTML 使用 attr
键 class:
{{ form_widget(form.timespan, {'attr': {'class': 'span2'}}) }}
尝试在 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 框变为空。
<select id="form_timespan" name="form[timespan]" required="required" class="span2"></select>
知道为什么会发生这种情况吗?我错过了什么吗?
您在通话中忘记了 attr
键:
{{ form_widget(form.timespan, {'attr': {'class': 'span2'}}) }}
问题显然出在Twig。您可以通过编辑表单主题来对此进行调试,以查看出现的值和预期值。主题可以在以下位置找到:
vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_3_layout.html.twig
(或者您 can configure Symfony 使用自己的。)
您正在寻找 {% block choice_widget %}
专门用于呈现此内容。
在这种情况下,您似乎忘记了为您的 HTML 使用 attr
键 class:
{{ form_widget(form.timespan, {'attr': {'class': 'span2'}}) }}