我需要在Symfony中设置一个自定义表单类型,它使用选择类型作为父类,但实际上并不需要预先选择选项。因为我希望能够使用ajax调用填充select,然后使用调用中的一个选项提交而不会出现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';
}
}
答案 0 :(得分:0)
老兄看看EntityType
它的父母是choice
。但整个显示由ChoiceType
处理。当我做类似的事情时,我从过载ChoiceType
和EntityType
开始。然后在重载实体中设置getParent()
以挖掘重载选项。
最后在我的情况下,我修改了新的choice
并将我的嵌入表单放在那里。这样做很棘手。它消耗了大量的时间。
但是使用这种方法我对验证没有任何问题。