gpt4 book ai didi

symfony - 在 symfony2 中添加自定义值以及数据库中的内容

转载 作者:行者123 更新时间:2023-12-02 05:45:40 25 4
gpt4 key购买 nike

我的问题如下。

我在表单生成器中有一个下拉列表,它成功地从数据库中检索数据。

 public function buildForm(FormBuilder $builder, array $options) {
$builder->add('Statusname', 'entity', array('empty_value' => 'All','class' => 'MyProject\EntityBundle\Entity\IssueStatusType', 'property' => 'name', 'required' => false,'query_builder' => function ($repository) { return $repository->createQueryBuilder('es')->orderBy('es.name', 'ASC'); },))
}

它工作正常。但是当我添加我的自定义数据时

'not closed' => 'Not closed'

进入下拉列表即

public function buildForm(FormBuilder $builder, array $options) {
$builder->add('Statusname', 'entity', array('empty_value' => 'All','not closed' => 'Not closed','class' => 'MyProject\EntityBundle\Entity\IssueStatusType', 'property' => 'name', 'required' => false,'query_builder' => function ($repository) { return $repository->createQueryBuilder('es')->orderBy('es.name', 'ASC'); },))
}

它不起作用。谁能告诉我为什么?

提前致谢。

最佳答案

FormBuilder::add() 方法的第三个参数是一个关联的选项数组。“未关闭”不是有效选项,因此它不起作用。

在您的情况下,您必须手动创建自定义集合并使用“选择”类型。为了使其工作,您必须将实体管理器注入(inject)您的表单类型。这是一个极简主义的例子:

class IssueType extends AbstractType
{
private $entityManager;

public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}

public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('Statusname', 'choice', array(
'empty_value' => 'All',
'required' => false,
'choices' => $this->buildStatusNames(),
)
}

private function buildStatusNames()
{
$choices = array();
$types = $this
->entityManager
->getRepository('MyProject\EntityBundle\Entity\IssueStatusType')
->createQueryBuilder('es')
->orderBy('es.name', 'ASC')
->getQuery()
->getResult();

foreach ($types as $type) {
// I assume key is retrieved by getId
$choices[$type->getId()] = $type->getName();
}

$choices['not closed'] = 'Not closed';

return $choices;
}
}

关于symfony - 在 symfony2 中添加自定义值以及数据库中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10312850/

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