【问题标题】:Show value form choices field (formtype) in list view twig (Symfony2)在列表视图树枝(Symfony2)中显示值表单选择字段(formtype)
【发布时间】:2013-10-20 12:40:25
【问题描述】:

我对选择和表单类型有疑问。我的问题的简短描述:

我的表单类型带有可以选择的字段

->add('fieldName2', 'choice', array(
        'label' => 'Some label',
        'choices' => array(
            0 => 'Option 1',
            1 => 'Option 2',
            ...,
            n => 'Option n'
        ),
    ))

在数据库中,该字段是 int(必须是数字)。现在问题来了:我想列出该表的所有记录。结果是这样的:

fieldName1|fieldName2
----------|----------
somevalue | 0
somevalue | 1
somevalue | 2

但我不会看起来像这样:

fieldName1|fieldName2
----------|----------
somevalue | Option 1
somevalue | Option 2
somevalue | Option 3

如何在模板中组合表单类型字段选择和实际值。我必须为此创建自定义树枝功能还是有内置解决方案?

【问题讨论】:

    标签: php forms symfony twig


    【解决方案1】:

    假设$data 包含控制器中数据库中的字段,请创建“选择”数组:

    $choices = array();
    foreach ($data as $elem)
    {
      $choices[$elem] = "Option {$elem}";
    }
    

    然后,创建您的表单并在构造函数中传递您的选择数组。

    $form = $this->createForm(new YourFormType($choices), new YourFormData());
    

    在你的表单中,添加一个构造函数:

    private $choices;
    
    // (...)
    
    public function __construct(array $choices)
    {
      $this->choices = $choices;
    }
    

    最后,使用您之前准备的一系列选项创建您的字段。

    (...)
    ->add('fieldName2', 'choice', array(
            'label' => 'Some label',
            'choices' => $this->choices,
    ))
    

    注意:将属性名称“choices”替换为不易混淆的名称;如果你有几个看起来像这样的选择,会更容易阅读。

    【讨论】:

    • 嗨阿兰。您建议我应该将选择数组放入控制器并将其传递给模板,然后执行以下操作:{{ choice[entity.fieldName2] }} ?
    • 选项现在在 formtype 类中。
    • 不,不要将其传递给模板,而是传递给表单类型的对象。
    • 我不会选择:),这不是编辑或新页面。我不会显示该表中的所有值。我只需要查看该列的值,就好像它是从该数组中选择的一样:) 我的问题是选择数组在 formtype 对象中。
    • 您好 Alain,没有表单数据。仅用于列出所有记录的选择数组。您的回答很有帮助,因此我将其标记为已接受:)。解决方案是在控制器中有选择数据,因此很容易根据您尝试执行的操作(从表单或列表记录添加新记录)将其传递给表单类型或模板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多