[我有2个共享公共字段的实体A
和B
,由于我不想使用trait
,因此我使用Doctrine inheritance for entities common fields来基于(MappedSuperClass
)设置那些公共字段。] >
[为实体B
建立一条宁静的发布路线,我实例化了一个FormBType
,其中data_class
映射到B::class
,并扩展了FormCType
(包含公共字段,'data_class
'则不映射任何内容)”。
[我试图在https://symfony.com/doc/current/form/inherit_data_option.html中使用Inherited_data方法,但我不希望表单中有多余的键/嵌套层(我希望将其展平)。
我的问题是,没有考虑使用Assert对特征中的公共字段进行验证,而是使用空字符串通过validation
进行表单传递。
class B {
use CTrait;
}
//trait that has the common fields with ORM mapping and Assert
trait CTrait {
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string")
* @ORM\Assert\Length(min="2")
*/
private $name;
}
//Common fields formType
class CType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name');
}
}
//Form using the common fields formType
class BType extends CType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => B::class,
'csrf_protection' => false,
]);
}
}
我有2个共享公共字段的实体A和B,我基于(实体公共字段的Doctrine继承)使用一个特征来设置这些公共字段,因为我不想使用...