我试图覆盖Symfony中的表单。第三方捆绑包是private-message-bundle : firediy
这是第三方捆绑表格:
$builder
->add('recipients', null, array(
'label' => 'form.recipients',
'translation_domain' => 'FDPrivateMessageBundle',
))
->add('subject', null, array(
'label' => 'form.subject',
'translation_domain' => 'FDPrivateMessageBundle',
))
->add('firstMessage', PrivateMessageType::class, array(
'label' => false,
));
->add recipients
部分返回所有用户并列出它们以供我选择其中几个。我希望默认情况下能够为捆绑包提供一个收件人。我尝试在ConversationType
下创建一个类Form
并编写以下代码:
$builder->add('recipients', EntityType::class, array(
'class' => 'AppBundle:User',
'multiple' => true,
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('u')
->where('u.id', $id);
},
.....
));
但是我不认为该类是否覆盖了捆绑包,因为没有进行任何更改。
这样做的正确方法是什么?如果我的问题不够明确,请告诉我。 谢谢你的时间。
答案 0 :(得分:0)
有一个关于如何覆盖或扩展表单字段的类似示例:http://symfony.com/doc/master/bundles/FOSUserBundle/overriding_forms.html
该示例基于覆盖FosUser寄存器格式:
<?php
// src/AppBundle/Form/RegistrationType.php
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class RegistrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name');
}
public function getParent()
{
return 'FOS\UserBundle\Form\Type\RegistrationFormType';
// Or for Symfony < 2.8
// return 'fos_user_registration';
}
public function getBlockPrefix()
{
return 'app_user_registration';
}
// For Symfony 2.x
public function getName()
{
return $this->getBlockPrefix();
}
}
如您所见,您必须指定要扩展的父表单。