gpt4 book ai didi

symfony - 用常量数组填充 ChoiceType

转载 作者:行者123 更新时间:2023-12-02 18:01:09 24 4
gpt4 key购买 nike

使用底层实体中定义的常量数组填充 Symfony 表单 choiceType 并添加基于相同常量创建断言的最佳方法是什么。选项名称应存储在数据库中。

我正在使用 Symfony 2.8,这就是我所做的。它运行良好,但我认为必须有一种更简单的方法来处理所有新的表单功能。

谢谢,汉内斯

实体

class User implements UserInterface, \Serializable
{
const OCCUPATION_SCHOOL_HIGHER_DEGREE = 'Schülerin/Schüler an Gymnasium';
const OCCUPATION_SCHOOL_LOWER_DEGREE = 'Schülerin/Schüler an Haupt-/Real- und anderen Schulen';
const OCCUPATION_WORK_TRAINING = 'Berufsausbildung';
const OCCUPATION_UNIVERSITY = 'Studium an einer Hochschule';
const OCCUPATION_WORK_FULLTIME = 'Vollzeiterwerbstätigkeit';
const OCCUPATION_WORK_PARTTIME = 'Teilzeiterwerbstätigkeit';
const OCCUPATION_NATIONAL_SERVICE = 'Wehrdienst/Zivildienst/FSJ/FÖJ';
const OCCUPATION_UNEMPLOYED = 'keine Beschäftigung';
const OCCUPATION_OTHERS = 'sonstiges';

...
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Assert\NotBlank(message = "Pflichtfeld.")
* @Assert\Choice(
* choices = {
* User::OCCUPATION_SCHOOL_HIGHER_DEGREE,
* User::OCCUPATION_SCHOOL_LOWER_DEGREE,
* User::OCCUPATION_WORK_TRAINING,
* User::OCCUPATION_UNIVERSITY,
* User::OCCUPATION_WORK_FULLTIME,
* User::OCCUPATION_WORK_PARTTIME,
* User::OCCUPATION_NATIONAL_SERVICE,
* User::OCCUPATION_UNEMPLOYED,
* User::OCCUPATION_OTHERS,
* },
* message = "Bitte wähle einen Eintrag aus der Liste."
* )
*/
private $occupation;

...
}

表单类型

class UserRegisterType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
// Occupation
$builder->add('occupation', ChoiceType::class, array(
'label' => 'Beschäftigung*',
'placeholder' => 'Bitte wählen',
'choices' => array(
User::OCCUPATION_SCHOOL_HIGHER_DEGREE => User::OCCUPATION_SCHOOL_HIGHER_DEGREE,
User::OCCUPATION_SCHOOL_LOWER_DEGREE => User::OCCUPATION_SCHOOL_LOWER_DEGREE,
User::OCCUPATION_WORK_TRAINING => User::OCCUPATION_WORK_TRAINING,
User::OCCUPATION_UNIVERSITY => User::OCCUPATION_UNIVERSITY,
User::OCCUPATION_WORK_FULLTIME => User::OCCUPATION_WORK_FULLTIME,
User::OCCUPATION_WORK_PARTTIME => User::OCCUPATION_WORK_PARTTIME,
User::OCCUPATION_NATIONAL_SERVICE => User::OCCUPATION_NATIONAL_SERVICE,
User::OCCUPATION_UNEMPLOYED => User::OCCUPATION_UNEMPLOYED,
User::OCCUPATION_OTHERS => User::OCCUPATION_OTHERS,
),
'choices_as_values' => true,
)
);

...}

最佳答案

我找到了这个bundle几个月前,我认为它可以满足您的需求。

您将可能的值存储在您的config.yml中(您可以使用您的类常量)。然后,您可以使用专用表单类型来检索您的选择并在实体中添加验证约束。

关于symfony - 用常量数组填充 ChoiceType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37000267/

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