Обновите поля сущностей данными из другой сущности symfony2

1

У меня есть две таблицы в базе данных - заказы и грузовики. У них есть отношение ManyToOne. Когда я получаю поле заказа - грузовик по умолчанию имеет значение null. Таблицы Trucks имеют предварительные данные. Поэтому моя задача: для каждого объекта заказа, который я восстанавливаю с помощью метода findAll() и отправки в twig (render as table), установите флажок, поэтому я могу назначить грузовик для каждого заказа. Вот форма, которая назначает грузовик для заказа:

    class TruckType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('name', 'entity', array(
            'class' => 'AppBundle:Trucks',
            'choice_label' => 'name',
            'label' => false,
            'multiple' => false,
            'required' => false,
        ));

    }

    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\Orders',
        ));
    }

    /**
     * Returns the name of this type.
     *
     * @return string The name of this type
     */
    public function getName()
    {
        return 'TruckType';
    }

}

И ветка:

            {% for order in orders %}
        <tr>
            <td width="30%">{{ order.name }}</td>
            <td width="30%">{{ order.delivery }}</td>
            <td width="15%">{{ order.stock }}</td>
            <td width="15%">{{ form_widget(truckform) }}</td>
        </tr>
        {% endfor %}

Но этот флажок render отображается только для первого объекта в таблице. Где я ошибаюсь?

Теги:

1 ответ

1
Лучший ответ

Вы не truckform код для того, как вы генерируете переменную truckform но я предполагаю, что вы просто TruckType форму, используя тип формы TruckType. Проблема с этим подходом заключается в том, что Symfony не будет обрабатывать форму или поле формы более одного раза, так что ваш фрагмент {{ form_widget(truckform) }} будет отображаться только первая итерация цикла. Если вы думаете об этом, это имеет смысл, иначе у вас будет несколько полей формы с одинаковым именем и идентификатором, и когда вы отправите свою форму, не будет никакого способа их дифференцировать. Вам нужно использовать другой подход, используя встроенные формы. Взгляните на эту страницу документа Symfony, которая укажет вам в правильном направлении: как вставить коллекцию форм

Ещё вопросы

Сообщество Overcoder
Наверх
Меню