Я создаю поле ввода с 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 добавляется в поле только в определенных случаях. Есть ли способ сделать это в конструкторе форм?
Только к некоторым текстовым полям в одной форме. В случае типа поля или имени поля цвет
Да, это текстовое поле. Я просто хочу добавить палитру цветов начальной загрузки farbelous.io/bootstrap-colorpicker/v2
Я не хочу использовать цветовое поле Symfony






Я бы создал свой собственный настраиваемый тип поля для обработки этих полей.
Сначала определите класс поля
// 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);
По логике, вам нужно будет настроить это в соответствии с вашими потребностями, но этого должно быть достаточно, чтобы начать работу.
Собираетесь ли вы применить его только к некоторым текстовым полям в форме? Для всех текстовых полей в одной форме? ко всем текстовым полям во всех формах в вашем приложении?