#javascript #php #vue.js #twig #drupal-8
#javascript #php #vue.js #веточка #drupal-8
Вопрос:
Я в основном разрабатываю файл twig, я очень новичок в drupal 8
Итак, ранее у меня был файл Vue, в котором у меня есть этот фрагмент кода
<div class="dropdown-menu":aria-labelledby="menu.class" v-if="menu.class.includes('dropdown')">
Где menu.class является массивом элементов
Эта строка будет выполняться, только если menu.class включает в себя раскрывающийся список стилей, который работает абсолютно нормально.
Теперь я копирую то же самое в twig fine и добавил этот код
{% if menu.class.hasClass('dropdown') %}
<div class="dropdown-menu" aria-labelledby="{{ menu.class }}">
</div>
{% endif %}
Вот массив меню
Array (
[0] => Array
( [title] => Home [path] => /
[class] => no-break-class )
[2] => Array
(
[title] => CFO
[path] =>
[class] => dropdown-two-col
[children] => Array )
)
Но код не входит в цикл. Есть ли какой-либо другой синтаксис для этого. Любая помощь приветствуется
Ответ №1:
Я не думаю, что twig распознает ваше menu.class.hasClass (‘выпадающий список’), вы можете попробовать сбросить эту переменную, чтобы узнать, существует ли она. Если вы хотите проверить, существует ли значение в массиве twig:
{% if 'dropdown' in menu.class %}
Чтобы проверить, существует ли ключ:
{% if 'dropdown' in menu.class|keys %}
Комментарии:
1. Я пробовал,
{% if 'dropdown' in menu.class %}
но не работает2. Можете ли вы опубликовать свой массив menu.class здесь ?
3. В вашем случае вам нужно выполнить цикл по массиву, чтобы определить, содержит ли ваш массив значение «выпадающий список», для этого у twig есть цикл for. Вы можете взглянуть twig.symfony.com/doc/3.x/tags/for.html#adding-a-condition . Другой метод заключается в написании пользовательского фильтра twig для обработки вашего бизнеса, это документ для Symfony, но вы можете взглянуть, чтобы использовать его в вашей ситуации. symfony.com/doc/current/templating/twig_extension.html