【问题标题】:Symfony. How do I pass parameters to Custom Form Field Type?交响乐。如何将参数传递给自定义表单字段类型?
【发布时间】:2017-05-02 14:10:11
【问题描述】:

我根据documentation 创建了自定义表单字段类型,它工作正常(我的意思是没有错误)。我有一堂课:

<?php

namespace AppBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;

class RangeType extends AbstractType
{
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(

        ));
    }

    public function getParent()
    {
        return RangeType::class;
    }
}

我有一个树枝模板:

{# app/Resources/views/form/fields.html.twig #}
{% block range_widget %}
   <div class="cell-md-12 offset-top-45 offset-md-top-0">
      <div data-min="" data-max="6000" data-start="[9, 2999]" data-step="10" data-tooltip="false" data-min-diff="10" data-input=".rd-range-input-value-2" data-input-2=".rd-range-input-value-3" class="rd-range"></div>
      <hr class="divider divider-offset-lg divider-gray veil reveal-md-block">
    </div>
{% endblock %}

我将它添加到配置中:

# app/config/config.yml
twig:
    form_themes:
        - 'form/fields.html.twig'

最后我有一个将字段添加到表单的代码:

$builder->add('price', RangeType::class, [
                'data'   => $options['priceRange'] ? $options['priceRange'] : $options['minPrice'].",".$options['maxPrice'],
                'attr'=> [
                    'data-min' => $options['minPrice'],
                    'data-max' => $options['maxPrice'],
                    'data-dimension' => $options['dimension']
                ]
            ]);

如何使用树枝模板中表单构建器中的“数据”、“数据最小值”、“数据最大值”、“数据维度”选项?就你所见,它们在模板中都是静态的。

【问题讨论】:

    标签: php forms symfony


    【解决方案1】:

    您可以使用以下路径访问“attr”选项值:

    form.vars.attr
    

    因此,要获取“数据最小值”参数值表单示例,您只需:

    {% set attr = form.vars.attr %}
    <div data-min="{{ attr['data-min'] }}" ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 2021-11-05
      • 2023-03-20
      • 2023-03-12
      • 2010-11-15
      • 2010-10-12
      • 2014-08-23
      • 1970-01-01
      相关资源
      最近更新 更多