Как я могу обернуть свое поле ввода тегом <div> при использовании с конструктором форм Symfony?

Я создаю поле ввода с 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 добавляется в поле только в определенных случаях. Есть ли способ сделать это в конструкторе форм?

Собираетесь ли вы применить его только к некоторым текстовым полям в форме? Для всех текстовых полей в одной форме? ко всем текстовым полям во всех формах в вашем приложении?

yivi 18.02.2019 15:53

Только к некоторым текстовым полям в одной форме. В случае типа поля или имени поля цвет

peace_love 18.02.2019 15:56

Да, это текстовое поле. Я просто хочу добавить палитру цветов начальной загрузки farbelous.io/bootstrap-colorpicker/v2

peace_love 18.02.2019 15:59

Я не хочу использовать цветовое поле Symfony

peace_love 18.02.2019 15:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
423
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы создал свой собственный настраиваемый тип поля для обработки этих полей.

Сначала определите класс поля

// 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);

По логике, вам нужно будет настроить это в соответствии с вашими потребностями, но этого должно быть достаточно, чтобы начать работу.

Другие вопросы по теме