Пользовательский тип формы symfony

Мне нужно настроить пользовательский тип формы в Symfony, который использует тип выбора в качестве родителя, но на самом деле не требует предварительной загрузки вариантов. Как и я, я хочу иметь возможность заполнить выбор вызовом ajax, а затем отправить один из вариантов вызова без получения ошибок This value is not valid., предположительно потому, что это не один из предварительно загруженных параметров.

Мне не нужен пользовательский преобразователь данных, поскольку я делаю это через контроллер пакета, мне просто нужно, чтобы Symfony не жаловался, когда я отправляю параметр, которого изначально не было в списке. Вот как выглядит мой пользовательский тип формы:

<?php

namespace ISFP\Index\IndexBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class NullEntityType extends AbstractType
{
    public function getDefaultOptions(array $options)
    {
        $defaultOptions = array(
            'em'                => null,
            'class'             => null,
            'property'          => null,
        );

        $options = array_replace($defaultOptions, $options);

        return $options;
    }

    public function getParent()
    {
        return 'choice';
    }

    public function getName()
    {
        return 'null_entity';
    }
}

person Aaron Cole    schedule 13.02.2013    source источник
comment
Никто? Я бы подумал, что это довольно простой вопрос для тех, кто знает, что делает..?   -  person Aaron Cole    schedule 14.02.2013
comment
1. 7 часов - это не так уж и много, чтобы ждать, прежде чем вы решите, что никто не может или не поможет. 2. Вы на самом деле не задали вопрос.   -  person Lighthart    schedule 14.02.2013
comment
Ха-ха, Лайтхарт, правда, однако у меня немного времени не хватает, так как я собирался доставить этот веб-сайт клиенту позже сегодня вечером.   -  person Aaron Cole    schedule 14.02.2013
comment
Что касается вопроса, я думаю, что я спрашиваю, можете ли вы поместить объект в параметр ->setAllowedValues(), но не загружать его на самом деле при создании формы. Имеет ли это смысл?   -  person Aaron Cole    schedule 14.02.2013
comment
Я имел дело с некоторыми из этих проблем в stackoverflow.com/questions/11462839/ без прямого ответа на этот вопрос. Мне нужно подумать об этом еще немного, прежде чем дать достойный ответ.   -  person Lighthart    schedule 14.02.2013


Ответы (1)


Чувак, посмотри на EntityType, у него родитель как choice. Но весь дисплей обрабатывался ChoiceType. Когда я делал подобные вещи, я начал с перегрузки И ChoiceType, и EntityType. А затем установите в перегруженном объекте getParent() для моего перегруженного выбора.

Наконец, в моем случае я модифицирую новый choice и помещаю туда свою встроенную форму. Это сложно сделать. И это отнимает много времени.

Но с таким подходом у меня нет проблем с проверкой.

person Max Małecki    schedule 14.02.2013
comment
Не могли бы вы расширить этот ответ? Возможно, предоставьте какой-нибудь рабочий код, чтобы я мог воспроизвести ваше решение? Спасибо вам за ваши предложения! - person Aaron Cole; 15.02.2013
comment
Вы используете symfony2.0 или symfony 2.1? - person Max Małecki; 18.02.2013