Symfony2: обработка формы с данными реляционной доктрины - PullRequest
2 голосов
/ 26 мая 2011

Я создаю простую CMS в S2, и у меня мало проблем с обработкой реляционной категории в форме статьи.

Код для CategoryType и действия: http://codepaste.net/ahyoig все как в учебнике / руководстве на сайте Symfony.

Форма выглядит хорошо, но когда я обрабатываю данные (также как в руководстве), я получаю ошибку: «Ожидаемый аргумент типа массив, строка задана» в поле выбора, и я сейчас не знаю, как ее решить.

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

Я думаю, что ваша проблема в том, что вы установили опцию multiple на false.Это означает, что тип формы будет возвращать строковое значение (поскольку вы устанавливаете multiple в false, одно значение), но ваше отношение, вероятно, настроено как отношение «многие ко многим».

Если для параметра multiple установлено значение true, ваш объект отправит массив, а не строку, что и ожидается приложением.Затем, если вам не нравится внешний вид списка вашего CategoryType в HTML, вы можете отобразить его по-другому, используя заголовок в Symfony2.

Надеюсь, это поможет, Мэтт

1 голос
/ 24 февраля 2012

Вам не нужен тип категории.Создание массива $ Categories также бесполезно.

Лучший выбор - использовать собственный тип формы объекта:

<?php

use Doctrine\ORM\EntityRepository;

//...

$article = new Article();

$form = $this->get('form.factory')
            ->createBuilder('form',$article)
            ->add('category', 'entity', array
            (
                'class' => 'CMSBackBundle:Category',
                'query_builder' => function(EntityRepository $er)
                {
                    return $er->createQueryBuilder('c')
                            ->orderBy('c.title', 'ASC');
                },
                'expanded' => false,
                'multiple' => false
            )
            // ...
            ->getForm();
...