Symfony 2 - 如何将数据传递给 formBuilder? [英] Symfony 2 - how to pass data to formBuilder?
问题描述
我在表单中使用实体选择列表.我只想使用特定的实体(例如:仅用户所属的组)因此,在控制器中,我正在获取这些组,并尝试将它们传递到 formBuider
.
I'm using entity choice list in my form. I want to use only specific entities (in example: only groups that user belongs to)
So, in controller, I'm getting these groups, and trying to pass them into formBuider
.
控制器:
/.../
$groups = $em->getRepository('VendorMyBundle:Group')->getUserGroups($user);
$form = $this->createForm(new Message($groups), $message);
/.../
那么,现在怎么办?如何在 formBuilder 中使用它?如何更改此行以使用传递的组数组?
so, what now? how to use it in formBuilder? how to change this line to use passed array of groups?
->add('group','entity',array('class' => 'VendorMyBundleEntityGroup', 'label'=>'Group:'))
或者以其他方式:
class MessageType
{
/.../
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('group','entity',
array(
'class' => 'VendorMyBundleEntityGroup',
'property' => 'name',
'query_builder' => function ($repository) {
$qb = $repository->createQueryBuilder('group');
$qb->add('where', 'group.administrator = :user');
$qb->setParameter('user', $user->getId());
return $qb;
},
'label' => 'Group'
)
)
// Continue adding fields
;
}
/.../
}
那么我怎样才能让对象 $user 在表单构建器中使用?($user 代表当前登录的用户)
so how can i get object $user to use in form builder? ($user represent current logged user)
推荐答案
你可以在 __construct() 方法中给出你想要使用的对象.
You can give the object you want to use in the __construct() method.
例如:
$form = $this
->get('form.factory')
->create(new ApplyStepOneFormType($this->company, $this->ad), $applicant);
在您的表单中输入:
function __construct(YourBundleEntityCompany $company, DYBConnectBundleEntityAd $ad) {
$this->company = $company;
$this->ad = $ad;
}
然后在你的表单中输入 buildForm 方法:
And then in your form type in buildForm method :
$company = $this->company;
$builder->add('ad', 'entity', array(
'class' => 'YourBundleEntityAd',
'query_builder' => function(YourBundleRepositoryAdRepository $er) use ($company) {
return $er->getActiveAdsQueryBuilder($company);
},
));
这篇关于Symfony 2 - 如何将数据传递给 formBuilder?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!