1

我需要在 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';
    }
}
4

1 回答 1

0

老兄看看EntityType它有一个父母作为一个choice。但整个显示器由ChoiceType. 当我做类似的事情时,我从重载 BothChoiceTypeEntityType. 然后在重载实体中getParent()设置挖掘重载选项。

最后,在我的情况下,我修改了新的choice并将我的嵌入表单放在那里。做起来很棘手。而且会消耗很多时间。

但是通过这种方法,我对验证没有任何问题。

于 2013-02-14T10:10:20.870 回答