Есть задача сделать сервис "Вопрос-ответ", решение хочу сделать стандартными средствами. Создал тип материала "Вопрос" и дал доступ анонимным пользователям создавать его, скрыв некоторые поля. Теперь хочу вывести форму в шаблоне page, а также сделать для каждого поля свою обёртку.
Вопрос: как вывести форму программно кодом и настроить обёртку для полей?
Комментарии
Выводить много чего в шаблонах сейчас удобно через twig_tweak
Спасибо - увидел решение для типа материала ({{ drupal_entity_form('node', values={type: 'article'}) }})
Теперь осталось понять как настроить обёртку
Обёртки удобно настраивать переопределив шаблон нужного элемента
Уточните что имеется ввиду? Нужно делать шаблон каждого поля или это можно сделать в одном шаблоне вроде "html--node--add--article.html.twig"? если второй вариант, то нет ли у вас примера вывода полей?
Я думаю, все не совсем понимают что именно вы хотите сделать. Какие обёртки вам нужны и зачем? Поясните
Необходимо адаптировать вёрстку под стандарты БЭМ, для этого мне нужно обернуть все, что выводит контейнер form в свои div с классами, а также добавить классы самим инпутам. Отдельно необходимо вывести капчу.
Ранее я приводил такие манипуляции с Webform и формой поиска, переопределив их в общем шаблоне form.html.twig
Вот мой пример:
<form action="{{element['#action']}}" method="get" id="search-block-form" accept-charset="UTF-8" data-drupal-form-fields="edit-keys">
<input class="search__input" title="Поиск" data-drupal-selector="edit-keys" type="text" id="edit-keys" name="keys" value="" size="15" maxlength="128" placeholder="Поиск"></input>
<button data-drupal-selector="edit-submit" type="submit" id="edit-submit" value="Search" class="btn__search">
<svg id="Слой_1" data-name="Слой 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 87.9 87.9">
<path class="icon__search--dark" d="M35.52.48A35.46,35.46,0,1,1,10.45,10.86,35.33,35.33,0,0,1,35.52.48ZM52.1,19.35A23.45,23.45,0,1,0,59,35.93,23.35,23.35,0,0,0,52.1,19.35Z" transform="translate(-0.06 -0.48)"></path>
<polygon class="icon__search--dark" points="60.52 52.04 87.9 79.42 79.42 87.9 52.04 60.52 60.52 52.04"></polygon>
</svg>
</button>
</form>
{% else %}
<form{{ attributes }}>
{{ children }}
</form>
{% endif %}
Но как я понял это не совсем правильный путь?
Для начала попробуйте создать субтему на основе темы glisseo. Её автор как раз любит БЭМ
Спасибо за наводку, посмотрел тему. Она в альфе ещё, смысл там в том, что автор укладывает классы элементов Drupal в логику БЭМ. В theme он прописывает эту логику, а потом в шаблонах для всех элементов форм её интегрирует. Также там есть шаблоны для лаяутов, параграфов, вьюсов, нет только ответа на мой вопрос))
У меня есть необходимость тонко настроить вывод формы добавления ноды, т.е. обернуть инпуты и кнопки в произвольную разметку. Например:
<div class="my_item_class">
<input class="my_class">
</div>
<div class="my_item_class">
<button class="my_class">Отправить</button>
</div>
</div>
Это уже давно не показатель.
Включайте отладку twig , смотрите какой шаблон используете для вывода вашей формы (или элемента формы), переопределяйте его в своей теме с нужной разметкой
Есть решение: https://drupal.stackexchange.com/questions/244585/how-to-override-node-a...
Но я не совсем понимаю как его использовать?
Есть также модуль для вывода форм создания ноды блоком: https://www.drupal.org/project/entityform_block
Но не хочется делать регион отдельный и добавлять туда блок, ставить модуль для решения одной простой задачи - единоразового вывода формы