Метки, возможные ошибки

  • Автор темы SlaSoft
  • Дата начала
S

SlaSoft

Maestro
#1
Ошибка не явная, но если бы был включен strict режим для твига, то она была бы выявлена давно

Код:
                {% for i in 0..tags|length %}
        {% if i < (tags|length - 1) %} <a href="{{ tags[i].href }}">{{ tags[i].tag }}</a>,
        {% else %} <a href="{{ tags[i].href }}">{{ tags[i].tag }}</a> {% endif %}
        {% endfor %} </p>
Если есть метки

но считаются от 0

а цикл до количества

в результате

имеем

<a href=""></a>

Элемента нет

Исправляем

Код:
             {% for i in 0..(tags|length - 1) %}
        {% if i < (tags|length - 1) %} <a href="{{ tags[i].href }}">{{ tags[i].tag }}</a>,
        {% else %} <a href="{{ tags[i].href }}">{{ tags[i].tag }}</a> {% endif %}
        {% endfor %} </p>
 
ТС
S

SlaSoft

Maestro
Топик Стартер #2
Часть вторая

В продолжение
бывает
теги (метки)
фф, ыы, вв,
последний элемент пустой
Код:
                    $data['tags'] = array();

            if ($product_info['tag']) {
                $tags = explode(',', $product_info['tag']);
                foreach ($tags as $tag) {
                    $data['tags'][] = array(
                        'tag'  => trim($tag),
                        'href' => $this->url->link('product/search', 'tag=' . trim($tag))
                    );
                }
            }
Вижу два решения
Код:
                $data['tags'] = array();

            if ($product_info['tag']) {
                $tags = explode(',', $product_info['tag']);
                $tags = array_filter($tags);
                foreach ($tags as $tag) {
                    $data['tags'][] = array(
                        'tag'  => trim($tag),
                        'href' => $this->url->link('product/search', 'tag=' . trim($tag))
                    );
                }
            }
Код:
                $data['tags'] = array();

            if ($product_info['tag']) {
                $tags = explode(',', $product_info['tag']);
                $tags = array_filter($tags);
                foreach ($tags as $tag) {
                    if (trim($tag)) {
                    $data['tags'][] = array(
                        'tag'  => trim($tag),
                        'href' => $this->url->link('product/search', 'tag=' . trim($tag))
                    );
                    }
                }
            }
 
Последнее редактирование модератором:
ТС
S

SlaSoft

Maestro
Топик Стартер #3
Baco

Baco

architect
#4
по хорошему, то к вышеперечисленным фиксам, я бы добавил разделение логики поиска в модели, отлельно для тегов
 
Твой e-mail адрес не будет опубликован. Он нужен для подтверждения сообщения !
Вверх