【问题标题】:Symfony 3 embedded forms labels not numbersSymfony 3 嵌入式表单标签不是数字
【发布时间】:2018-05-16 12:45:55
【问题描述】:

是否可以在不使用 javascript 的情况下将这些数字(嵌入表单的名称)更改为其他一些标签(它们取决于 StatisticField 的 name 属性)?

StatisticType 有 StatisticFieldTypes:

$builder->add('statisticFields', CollectionType::class, array(
            'entry_type' => StatisticFieldType::class,
            'by_reference' => true,
        ));

统计字段类型:

 $builder->add('dateSince', DateTimeType::class, [
                    'widget' => 'single_text',
                    'label' => 'date.since',
                    'required' => false,

                ])
                    ->add('dateTo', DateTimeType::class, [
                        'widget' => 'single_text',
                        'label' => 'date.to',
                        'required' => false,

                    ]);

谢谢。 [EDIT_1]: 我的模板:

<h1>Statistic creation</h1>
{{ form_start(form) }}
{{ form_widget(form) }}
<input type="submit" value="Create"/>
{{ form_end(form) }}

【问题讨论】:

  • 你能给我们看看你的树枝模板吗?我怀疑这些数字来自for 循环。
  • 谢谢你的树枝,看起来没问题。我想我找到了你的问题并回答了,让我知道它是否有效。

标签: php symfony symfony-forms


【解决方案1】:

试试

    $builder->add('statisticFields', CollectionType::class, array(
        'entry_type' => StatisticFieldType::class,
        'entry_options' => array('label' => false),
        'by_reference' => true,
    ));

号码来自CollectionType

编辑:

有名字

    $name = 'IamNotANumber';


    $builder->add('statisticFields', CollectionType::class, array(
        'entry_type' => StatisticFieldType::class,
        'entry_options' => array('label' => $name),
        'by_reference' => true,
    ));

【讨论】:

  • 我想要标签,而不是数字。每个 StatisticField 都有自己的名字
  • 此代码删除了集合的标签,而不是 StatitisticField 的标签
  • 我想用名字代替那些 0 , 1 , 2... 数字。我不想删除收藏的名称谢谢
  • 是否可以通过回调函数获取StatisticField实例并返回其名称?
【解决方案2】:

解决方法是重写 StatisticFieldType(嵌入式表单类型)中的 buildView 方法,并从表单中获取数据:

   /**
     * {@inheritDoc}
     */
    public function buildView(FormView $view, FormInterface $form, array $options)
    {
        // For Symfony 2.1 and higher:
        $view->vars['label'] = $form->getData()->getName();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多