【问题标题】:Symfony2: Convert Entitytype to Checkboxes / RadiobuttonSymfony2:将实体类型转换为复选框/单选按钮
【发布时间】:2016-10-06 10:23:35
【问题描述】:

对于我的 Symfony 项目,我使用了一个从另一个图表获取其字段数据的表单。数据本身显示正确,但预订字段 (Booking) 和房间设备字段 (Zimmerausstattung) 存在一些问题。

Form with EntityType

我的表单代码:


class ZimmerType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('zimmerNummer', TextType::class, array('label' => 'Zimmer: ', 'required' => false, 'attr' => array('placeholder' => 'Nr. oder Name')))
            ->add('betten', IntegerType::class, array('label' => 'Betten: *', 'attr' => array('placeholder' => 'Anzahl der Betten')))
            ->add('standort', TextType::class, array('label' => 'Standort: ', 'required' => false, 'attr' => array('placeholder' => 'Etage oder Ort des Zimmers')))
            ->add('zimmerausstattung', EntityType::class, array('label' => 'Zimmerausstattung: ',
                                                                'class' => 'AppBundle:Zimmerausstattung',
                                                                'multiple'    => true,
                                                                'required'    => false,
                                                                'empty_data'  => null,
                                                                ))
            ->add('location', EntityType::class, array('label' => 'Location: *', 
                                                       'class' => 'AppBundle:Location'))
            ->add('booking', EntityType::class, array('label' => 'Booking: ',
                                                                'class' => 'AppBundle:Booking',
                                                                'multiple' => true,
                                                                'required'    => false,
                                                                'empty_data'  => null,
                                                                ))
; }

我将整个表单转换为“Checkbutton / Radiobutton” - 尽管转换工作正常,但没有显示任何记录。

Form with Checkboxes


class ZimmerType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('zimmerNummer', TextType::class, array('label' => 'Zimmer: ', 'required' => false, 'attr' => array('placeholder' => 'Nr. oder Name')))
            ->add('betten', IntegerType::class, array('label' => 'Betten: *', 'attr' => array('placeholder' => 'Anzahl der Betten')))
            ->add('standort', TextType::class, array('label' => 'Standort: ', 'required' => false, 'attr' => array('placeholder' => 'Etage oder Ort des Zimmers')))
            ->add('zimmerausstattung', EntityType::class, array('label' => 'Zimmerausstattung: ',
                                                                'class' => 'AppBundle:Zimmerausstattung',
                                                                'multiple'    => true,
                                                                'required'    => false,
                                                                'empty_data'  => null,))
                                                                'expanded'    => true,))
            ->add('location', EntityType::class, array('label' => 'Location: *', 
                                                       'class' => 'AppBundle:Location'))
            ->add('booking', EntityType::class, array('label' => 'Booking: ',
                                                                'class' => 'AppBundle:Booking',
                                                                'multiple' => true,
                                                                'required'    => false,
                                                                'empty_data'  => null,
                                                                'choice_label' => 'person.name',
                                                                'expanded'    => true,
                                                                ))
; }

我的树枝代码:

{% extends '::base.html.twig' %}
{% form_theme edit_form 'form_table_layout.html.twig' %}
{% block title %}Zimmer {{ entity.zimmernummer }} bearbeiten {% endblock %}
{% block body -%}
<h1>{{ block('title') }}</h1>

{{ form(edit_form) }}

    <ul class="record_actions">
<li>
    <a href="{{ path('zimmer') }}">
        Zurück zur Übersicht
    </a>
</li>
<li>{{ form(delete_form) }}</li>
</ul>
{% endblock %}

我该如何解决这个问题? 如果有人能帮我解决这个问题,那就太好了,因为我的想法已经不多了。

【问题讨论】:

    标签: php forms symfony doctrine-orm doctrine


    【解决方案1】:

    只需添加引用对象参数的choice_label。示例:'choice_label' =&gt; 'title' 其中title 是您的实体字段。

    文档: http://symfony.com/doc/current/reference/forms/types/entity.html#choice-label

    【讨论】:

    • 谢谢它现在有效。但问题出在树枝模板上。
    • 很高兴您发现了问题 ;)
    【解决方案2】:

    我的最终解决方案:

    {% extends '::base.html.twig' %}
    {% block title %}Zimmer {{ entity.zimmernummer }} bearbeiten {% endblock %}
    
    {% block body -%}
    <h1>{{ block('title') }}</h1>
    
    <table>
    {{ form_start(edit_form) }}
    <tr>
    <td>{{ form_label(edit_form.zimmerNummer) }}</td>
    <td>{{ form_widget(edit_form.zimmerNummer) }}</td>
    </tr>
    <tr>
    <td>{{ form_label(edit_form.betten) }}</td>
    <td>{{ form_widget(edit_form.betten) }}</td>
    </tr>
    <tr>
    <td>{{ form_label(edit_form.standort) }}</td>
    <td>{{ form_widget(edit_form.standort) }}</td>
    </tr>
    <tr>
    <td>{{ form_label(edit_form.zimmerausstattung) }}</td>
    <td>{{ form_widget(edit_form.zimmerausstattung) }}</td>
    </tr>
    <tr>
    <td>{{ form_label(edit_form.location) }}</td>
    <td>{{ form_widget(edit_form.location) }}</td>
    </tr>
    <tr>
    <td> {# empty #}</td>
    <td>{{ form_widget(edit_form) }}</td>
    </tr>
    {{ form_end(edit_form) }}
    </table>
    
    <ul class="record_actions">
    <li>
    <a href="{{ path('zimmer') }}">Zurück zur Übersicht</a></li>
    <li>{{ form(delete_form) }}</li>
    </ul>
    {% endblock %}
    

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多