gpt4 book ai didi

forms - 如何自定义EntityType选项文本?

转载 作者:行者123 更新时间:2023-12-02 01:33:59 25 4
gpt4 key购买 nike

我想显示数据库中选项的选择。在本例中,我将 EntityTypequery_builder 一起使用:

$builder
->add('internships', EntityType::class, array(
'class' => 'IndexBundle\Entity\Internship',
'property' => 'id',
'empty_value' => 'Choose',
'query_builder' => function (EntityRepository $er) use ($trainee) {
return $er->createQueryBuilder('i')
->where('i.trainee = :trainee')
->andWhere('i.state = :state')
->setParameter('trainee', $trainee)
->setParameter('state', 'unverified');
},
'constraints' => array(
new NotBlank(array(
'message' => 'choice.not.blank'
))
)
))

现在一切都很好。我得到 select 元素,其中包含 id 值文本中的必要选项。

<select>
<option value="id">id</option>
...
</select>

如何自定义它?

例如,我希望它是 idtype 表列的组合:

<select>
<option value="id">#id (type)</option>
...
</select>

最佳答案

您可以使用choice_label选项来自定义您的选项。
您可以传递一个函数来检索所需的文本,或者如果您在其他地方重用实体,则可以向实体添加 getter。

具有函数:

$builder
->add('internships', EntityType::class, array(
'class' => 'IndexBundle\Entity\Internship',
'property' => 'id',
'empty_value' => 'Choose',
'query_builder' => function (EntityRepository $er) use ($trainee) {
return $er->createQueryBuilder('i')
->where('i.trainee = :trainee')
->andWhere('i.state = :state')
->setParameter('trainee', $trainee)
->setParameter('state', 'unverified');
},
'choice_label' => function ($internship) {
return '#'.$internship->getId().' ('.$internship->getType().')';
},
'constraints' => array(
new NotBlank(array(
'message' => 'choice.not.blank'
))
)
))

带有 setter/getter :

$builder
->add('internships', EntityType::class, array(
'class' => 'IndexBundle\Entity\Internship',
'property' => 'id',
'empty_value' => 'Choose',
'query_builder' => function (EntityRepository $er) use ($trainee) {
return $er->createQueryBuilder('i')
->where('i.trainee = :trainee')
->andWhere('i.state = :state')
->setParameter('trainee', $trainee)
->setParameter('state', 'unverified');
},
'choice_label' => 'idAndType',
'constraints' => array(
new NotBlank(array(
'message' => 'choice.not.blank'
))
)
))

实习.php:

Class Internship
{
//...
public function getIdAndType()
{
return '#'.$this->id.' ('.$this->type.')';
}
}

注意:
对于较旧的 Symfony 版本(<= 2.6),此选项被命名为 property并使用PropertyAccessor component支持的东西,所以你不能使用函数,只能使用它的 getter。

关于forms - 如何自定义EntityType选项文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41243477/

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