【发布时间】:2017-04-27 11:03:54
【问题描述】:
根据我的问题域,我需要一个 EntityType 混合 RadioButtons 和 CheckBoxes:
每个Selection 都有一个multiple 属性设置为true 或false,因为它需要checkbox 或radio。
Product Selections:
[X] Selection 1
[ ] Selection 2
( ) Selection 3
(o) Selection 4
[X] Selection 5
Selection 是一个实体,一个Product 可以有多个Selections。
产品类型:
class ProductType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('selections', SelectionListType::class);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => Product::class
));
}
}
class SelectionListType extends AbstractType
{
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'class' => Selection::class,
'expanded' => true,
'multiple' => ???????????
));
}
public function getParent()
{
return EntityType::class;
}
}
我尝试使用Form Type Extension,但没有成功:class
EntityTypeExtension extends AbstractTypeExtension
{
public function getExtendedType()
{
return EntityType::class;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefined(array('multiple'));
}
public function buildView(FormView $view, FormInterface $form, array $options)
{
if (isset($options['multiple'])) {
$parentData = $form->getParent()->getData();
$multiple = null;
if (null !== $parentData) {
$accessor = PropertyAccess::createPropertyAccessor();
$multiple = $accessor->getValue($parentData, $options['multiple']);
}
$view->vars['multiple'] = $multiple;
}
}
}
我应该如何实现这个?
【问题讨论】:
-
selections应该是一个CollectionType,entry_type设置为SelectionListType。 -
@JakubMatczak 这将产生所有选择列表的集合。如果您仍然认为这可能是一个解决方案,请说明
-
我可能误解了您的问题,现在我不确定您要做什么。当您有一些单选按钮和一些复选框时,我不知道它是如何工作的。看起来您的实体代表表单类型的属性而不是其值,我不知道复选框/单选值与实体的关系。
-
每个
Product可以有多个Selections,可以是复选框或单选。Selection是一个实体,具有一些属性:字符串title和布尔值multiple。这有什么不清楚的地方? -
选择了
Selection是什么意思?它是如何反映在实体中的?
标签: symfony symfony-forms