如何格式化/控制Symfony ChoiceType

时间:2017-06-08 02:16:25

标签: php symfony

是否有可能在Symfony 3中迭代ChoiceType值?我可以设置好的值,但它们只是在我无法控制的大块输出。我想循环遍历每个值并将其格式化/放在table / div / columns等中。

$builder->add('tOptions', ChoiceType::class, array(
    'choices'  => array(
        'one' => true,
        'two' => true,
        'three' => true,
        'four' => true,
        'five' => true,
    ),
    'expanded' => true,
    'multiple' => true,
    'required' => false,
));

注意:我不是在twig中输出,只是在PHP中输出。

echo $view['form']->widget($form['tOptions']);

结果:

<div id="t_options_tOptions">
<input type="checkbox" id="t_options_tOptions_0" name="t_options[tOptions][]" value="0">
<label for="t_options_tOptions_0">one</label>

<input type="checkbox" id="t_options_tOptions_1" name="t_options[tOptions][]" value="1">
<label for="t_options_tOptions_1">two</label>

<input type="checkbox" id="t_options_tOptions_2" name="t_options[tOptions][]" value="2">
<label for="t_options_tOptions_2">three</label>

<input type="checkbox" id="t_options_tOptions_3" name="t_options[tOptions][]" value="3">
<label for="t_options_tOptions_3">four</label>

<input type="checkbox" id="t_options_tOptions_4" name="t_options[tOptions][]" value="4">
<label for="t_options_tOptions_4">five</label>
</div>

如何迭代这些输入选项,以便将每个输入选项包装在div中或拆分为两个偶数列等。

2 个答案:

答案 0 :(得分:1)

这是我在自己的项目中使用的解决方案

DECLARE @date DATETIME = '12/1/2011';  
SELECT EOMONTH ( @date ) AS Result;  
GO  

或者您可以使用表单主题

{{form_label(form.transport)}}

 {% for key, item in form.transport.children %}
    <div class="custom-radio">
        <label for="{{item.vars.id}}">{{item.vars.label}}</label>
        <input 
            type="radio" 
            value="{{item.vars.value}}" 
            id=" {{item.vars.id}}" 
            name="{{item.vars.full_name}}" 
           {{ item.vars.checked ? 'checked' : '' }} 
       >
  </div>
{% endfor %}

答案 1 :(得分:0)

要自定义您必须为选择小部件创建自定义模板。具体来说,您可以扩展choice_widget_options.html.php file

要应用样式,您可以按照Form Theming in PHP文档进行操作。值得注意的是,使用Twig扩展模板会更简单。