gpt4 book ai didi

symfony - 将数据从 Controller 传递到 symfony2 类型

转载 作者:行者123 更新时间:2023-12-03 10:37:03 25 4
gpt4 key购买 nike

如果我在表单中显示“实体”类型的字段,并且我想根据我从 Controller 传递的参数过滤此实体类型,我该怎么做..?

//PlumeOptionsType.php
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('framePlume', 'entity', array(
'class' => 'DessinPlumeBundle:PhysicalPlume',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('pp')
->where("pp.profile = :profile")
->orderBy('pp.index', 'ASC')
->setParameter('profile', ????)
;
},

));
}

public function getName()
{
return 'plumeOptions';
}

public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'Dessin\PlumeBundle\Entity\PlumeOptions',
'csrf_protection' => true,
'csrf_field_name' => '_token',
// a unique key to help generate the secret token
'intention' => 'plumeOptions_item',
);
}
}

在 Controller 内部,我创建了表单:
i have that argument that i need to pass in my action code:
$profile_id = $this->getRequest()->getSession()->get('profile_id');
...
and then i create my form like this
$form = $this->createForm(new PlumeOptionsType(), $plumeOptions);

$plumeOptions 只是一个持久化的类。但它与另一个名为 PhysicalPlume 的类具有一对一的关系。现在,当我想在我的代码中显示“framePlume”时,我想显示一个过滤后的 PhysicalPlume 实体。

最佳答案

您可以将参数传递给表单类,如下所示:

//PlumeOptionsType.php
protected $profile;

public function __construct (Profile $profile)
{
$this->profile = $profile;
}

然后在 buildForm 的 query_builder 中使用它:
$profile = $this->profile;

$builder->add('framePlume', 'entity', array(
'class' => 'DessinPlumeBundle:PhysicalPlume',
'query_builder' => function(EntityRepository $er) use ($profile) {
return $er->createQueryBuilder('pp')
->where("pp.profile = :profile")
->orderBy('pp.index', 'ASC')
->setParameter('profile', $profile)
;
},

));

最后在您的 Controller 中:
// fetch $profile from DB
$form = $this->createForm(new PlumeOptionsType($profile), $plumeOptions);

关于symfony - 将数据从 Controller 传递到 symfony2 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7807388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com