Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как написать это с помощью twig?


Mitro2020

Recommended Posts

Здравствуйте. Прохожу курс по opencart. Там еще нет шаблонизатора. Всё по старинке. Документация по шаблонизатору скуданя. 

Есть у меня каруселька. Нужно вывести точки и слайды, но как это сделать с помощью twig? Вот то что написано обычным шаблонизатором php как раз и есть проблема (выделил жирным). Я не знаю как это реализовать с помощью twig)

 

<div class="carousel-indicators-wrap">
            <ol class="carousel-indicators">
                {% for banner in banners %}
                <li data-target="#carousel" data-slide-to="<?=$i?>"<?php if($i == 0) echo ' class="active"' ?>></li>
                {% endfor %}
            </ol>
        </div><!-- /.carousel-indicators-wrap -->

        <!-- Wrapper for slides -->
        <div class="carousel-inner" role="listbox">
            <?php $i = 0; foreach($banners as $banner): ?>
            <div class="item<?php if($i == 0) echo ' active' ?>">
                <div class="bgslide" style="background-image: url(<?=$banner['image']?>);"></div>
                <div class="container">
                    <div class="carousel-caption">
                        <h3><?=$banner['title']?></h3>
                        <?php if($banner['link']): ?>
                        <a href="<?=$banner['link']?>" class="btn-red">Shop Women’s Apparel</a>
                        <?php endif; ?>
                    </div>
                </div>
            </div>
            <?php $i++; endforeach; ?>
        </div>
!!!
<li data-target="#carousel"
 data-slide-to="<?=$i?>"
<?php if($i == 0) echo ' class="active"' ?>>
</li>
<?php $i = 0; foreach($banners as $banner): ?>
<?php $i++; endforeach; ?>
Надіслати
Поділитися на інших сайтах


11 минут назад, JudginAsh сказал:

{% set i = 0 %}

{% for banner in banners %}
     {% set i = i + 1 %}
{% endfor %}

 

Изучите переменные цикла, loop

https://twig.symfony.com/doc/3.x/tags/for.html

Надіслати
Поділитися на інших сайтах

8 минут назад, chukcha сказал:

Изучите переменные цикла, loop

https://twig.symfony.com/doc/3.x/tags/for.html

Спасибо, действительно) почему то думал по ключам перебирает) 

p.s. пойту документацию по TWIGу и сам посмотрю, а то как нуб =)

Надіслати
Поділитися на інших сайтах


Спасибо за ответы. Почти всё получилось.

 

На данный момент вот так:

 <div class="carousel-indicators-wrap">
            <ol class="carousel-indicators">
                {% for banner in banners %}
                <li data-target="#carousel" data-slide-to="{{ loop.index0 }}"   class="{% if loop.index %} {{ ' active'  }} {% endif %}" ></li>
                {% endfor %}


            </ol>
        </div><!-- /.carousel-indicators-wrap -->

        <!-- Wrapper for slides -->
        <div class="carousel-inner" role="listbox">
            {% set i = 0 %}
            {% for banner in banners %}
            <div class="item {% if i == 0 %} {{ ' active'  }} {% endif %}">
                <div class="bgslide" style="background-image: url({{ banner.image }});"></div>
                <div class="container">
                    <div class="carousel-caption">
                        <h3>{{ banner.title }}</h3>
                        {% if banner.link %}
                        <a href="{{ banner.link }}" class="btn-red">Shop Women’s Apparel</a>
                        {% endif %}
                    </div>
                </div>
            </div>
                {% set i = i + 1 %}
                {% endfor %}
        </div>

Всё работает, но не могу добавить активный класс для li

 <li data-target="#carousel" data-slide-to="{{ loop.index0 }}"   class="{% if loop.index == 0 %} {{ ' active'  }} {% endif %}" ></li>

Я не могу посмотреть что лежит в loop.index. Как это вообще сделать? С  чем нужно сравнивать? Условие такое что, если  data-slide-to = "0" то добавляем класс  active, если c помощью loop это не выйдет тогда сделать так?

 

{% set j = 0 %}
{% for banner in banners %}
 <li data-target="#carousel" data-slide-to="{{ j }}"   class="{{% if j == 0 %} {{ ' active'  }} {% endif %}">" ></li>
{% set j = i + 1 %}
{% endfor %}

Я просто хочу понять как будет лучше и правильнее.

 

{{ dump(banner) }} & {{ dump(banners) }} тоже не работает. По сути я должен увидеть что там лежит, но функция не работает и я не вижу что в переменных.

Uncaught Twig_Error_Syntax: Unknown "dump" function 

 

Змінено користувачем Mitro2020
Надіслати
Поділитися на інших сайтах


О! Я сделал так (loop.revindex0)

 <li data-target="#carousel" data-slide-to="{{ loop.index0 }}"   class="{% if loop.revindex0 %} {{ 'active'  }} {% endif %}" ></li>

Теперь всё хорошо и класс ACTIVE добавляется куда нужно, но вот остался вопрос насчёт дебагинга.

Змінено користувачем Mitro2020
Надіслати
Поділитися на інших сайтах


в опенкарте это расширение отключено, вернее не подключено

Но в вашем случае никуда смотреть не нужно.

Надіслати
Поділитися на інших сайтах

10 минут назад, chukcha сказал:

Но в вашем случае никуда смотреть не нужно.

 

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

 

Ладно если с дебагингом ничего не поделать и посмотреть не выйдет, то вопрос решен. Спасибо.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.