与 Symfony formbuilder 一起使用时,如何用 <div> 标记包装我的输入字段?
How can I wrap my input field with a <div> tag when using with Symfony formbuilder?
我正在使用 Symfony 创建一个输入字段:
$formBuilder->add($field['fieldName'], TextType::class, array('attr' => array('class' => 'form-control')));
输出为:
<input type="text" id="form_color" name="form[color]" class="form-control">
我需要的输出是:
<div class="cp input-group colorpicker-component">
<input type="text" id="form_color" name="form[color]" class="form-control" /> <span class="input-group-addon"><i></i></span>
</div>
这意味着我必须以某种方式将父级添加到特定的表单域。
我无法将其添加到实际表单中,因为此父 div 仅在特定情况下添加到字段中。有没有办法在 formbuilder 中做到这一点?
我会创建自己的 custom field type 来处理这些字段。
先定义字段class
// src/Form/Type/ColorSelectorType.php
namespace App\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class ColorSelectorType extends AbstractType
{
public function getParent()
{
return TextType::class;
}
}
然后您需要为字段创建模板:
{# templates/form/fields.html.twig #}
{% block color_selector_widget %}
{% spaceless %}
<div class="cp input-group colorpicker-component">
<input{{ block('widget_container_attributes') }} />
<span class="input-group-addon"><i></i></span>
</div>
{% endspaceless %}
{% endblock %}
注册您的自定义模板:
# config/packages/twig.yaml
twig:
form_themes:
- 'form/fields.html.twig'
最后使用你的新字段:
$formBuilder->add($field['fieldName'], ColorSelectorType::class);
从逻辑上讲,您需要对其进行自定义以满足您的需要,但这应该足以让您继续前进。
我正在使用 Symfony 创建一个输入字段:
$formBuilder->add($field['fieldName'], TextType::class, array('attr' => array('class' => 'form-control')));
输出为:
<input type="text" id="form_color" name="form[color]" class="form-control">
我需要的输出是:
<div class="cp input-group colorpicker-component">
<input type="text" id="form_color" name="form[color]" class="form-control" /> <span class="input-group-addon"><i></i></span>
</div>
这意味着我必须以某种方式将父级添加到特定的表单域。 我无法将其添加到实际表单中,因为此父 div 仅在特定情况下添加到字段中。有没有办法在 formbuilder 中做到这一点?
我会创建自己的 custom field type 来处理这些字段。
先定义字段class
// src/Form/Type/ColorSelectorType.php
namespace App\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class ColorSelectorType extends AbstractType
{
public function getParent()
{
return TextType::class;
}
}
然后您需要为字段创建模板:
{# templates/form/fields.html.twig #}
{% block color_selector_widget %}
{% spaceless %}
<div class="cp input-group colorpicker-component">
<input{{ block('widget_container_attributes') }} />
<span class="input-group-addon"><i></i></span>
</div>
{% endspaceless %}
{% endblock %}
注册您的自定义模板:
# config/packages/twig.yaml
twig:
form_themes:
- 'form/fields.html.twig'
最后使用你的新字段:
$formBuilder->add($field['fieldName'], ColorSelectorType::class);
从逻辑上讲,您需要对其进行自定义以满足您的需要,但这应该足以让您继续前进。