Как вывести форму добавления ноды на странице и настроить обёртку полей?

Главные вкладки

Аватар пользователя chelwolf chelwolf 21 апреля 2021 в 13:29

Есть задача сделать сервис "Вопрос-ответ", решение хочу сделать стандартными средствами. Создал тип материала "Вопрос" и дал доступ анонимным пользователям создавать его, скрыв некоторые поля. Теперь хочу вывести форму в шаблоне page, а также сделать для каждого поля свою обёртку.

Вопрос: как вывести форму программно кодом и настроить обёртку для полей?

Комментарии

Аватар пользователя chelwolf chelwolf 21 апреля 2021 в 13:35

Спасибо - увидел решение для типа материала ({{ drupal_entity_form('node', values={type: 'article'}) }})

Теперь осталось понять как настроить обёртку

Аватар пользователя chelwolf chelwolf 22 апреля 2021 в 9:23

Уточните что имеется ввиду? Нужно делать шаблон каждого поля или это можно сделать в одном шаблоне вроде "html--node--add--article.html.twig"? если второй вариант, то нет ли у вас примера вывода полей?

Аватар пользователя ivnish ivnish 22 апреля 2021 в 9:34

Я думаю, все не совсем понимают что именно вы хотите сделать. Какие обёртки вам нужны и зачем? Поясните

Аватар пользователя chelwolf chelwolf 22 апреля 2021 в 13:51

Необходимо адаптировать вёрстку под стандарты БЭМ, для этого мне нужно обернуть все, что выводит контейнер form в свои div с классами, а также добавить классы самим инпутам. Отдельно необходимо вывести капчу.

Ранее я приводил такие манипуляции с Webform и формой поиска, переопределив их в общем шаблоне form.html.twig

Вот мой пример:

{% if element['#form_id'] == 'search_block_form' %}
  <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 %}

Но как я понял это не совсем правильный путь?

Аватар пользователя chelwolf chelwolf 21 мая 2021 в 10:32

Спасибо за наводку, посмотрел тему. Она в альфе ещё, смысл там в том, что автор укладывает классы элементов Drupal в логику БЭМ. В theme он прописывает эту логику, а потом в шаблонах для всех элементов форм её интегрирует. Также там есть шаблоны для лаяутов, параграфов, вьюсов, нет только ответа на мой вопрос))

У меня есть необходимость тонко настроить вывод формы добавления ноды, т.е. обернуть инпуты и кнопки в произвольную разметку. Например:

<div class="box">
  <div class="my_item_class">
    <input class="my_class">
  </div>
  <div class="my_item_class">
    <button class="my_class">Отправить</button>
  </div>
</div>
Аватар пользователя ivnish ivnish 21 мая 2021 в 10:46

chelwolf wrote: Она в альфе ещё

Это уже давно не показатель.

chelwolf wrote: обернуть инпуты и кнопки в произвольную разметку

Включайте отладку twig , смотрите какой шаблон используете для вывода вашей формы (или элемента формы), переопределяйте его в своей теме с нужной разметкой

Аватар пользователя chelwolf chelwolf 21 апреля 2021 в 13:33

Есть решение: https://drupal.stackexchange.com/questions/244585/how-to-override-node-a...

Но я не совсем понимаю как его использовать?

Есть также модуль для вывода форм создания ноды блоком: https://www.drupal.org/project/entityform_block
Но не хочется делать регион отдельный и добавлять туда блок, ставить модуль для решения одной простой задачи - единоразового вывода формы