ФорумПрограммированиеPHP для идиотовРасширения PHP → Smarty вхождение подстроки в строку

Smarty вхождение подстроки в строку

  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 25 декабря 2009 г. 1:57

    В django-шаблонизаторе есть оператор in:

    {% if "bc" in "abcdef" %}
     This appears since "bc" is a substring of "abcdef"
    {% endif %}

    {% if "hello" in greetings %}
     If greetings is a list or set, one element of which is the string
     "hello", this will appear.
    {% endif %}

    {% if user in users %}
     If users is a QuerySet, this will appear if user is an
     instance that belongs to the QuerySet.
    {% endif %}


    А есть ли такое в смарти? Очень нужно, если нет, то как вариант написать свой тег/оператор/etc только остается
    adw/0
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 25 декабря 2009 г. 2:10, спустя 12 минут 49 секунд

    вариант есть всегда - написать свой модификатор, это 5 минут
    а насчет дефолтного - не встречал
    Спустя 24 сек.
    кстати, иногда быстрее написать свой модификатор, чем мудить на форуме :)
    все умрут, а я изумруд
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 25 декабря 2009 г. 2:12, спустя 1 минуту 56 секунд

    Почитал про сматри, там типа можно юзать php-функции:


    {if strpos($product.category_id, $category.id) !== false}
       <li><a href="/product/{$product.id}/">{$product.title}</a></li>
    {/if}
    Спустя 48 сек.
    кстати, иногда быстрее написать свой модификатор, чем мудить на форуме :)
    нахер мне шаблонизатор тогда, если он нихуя не может? лучше спрошу на форуме, вдруг в доке проебал момент
    adw/0
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 25 декабря 2009 г. 2:25, спустя 12 минут 50 секунд

    Но такой вариант нифига не работает… что интересно, посмотрел что мне там смарти нагенерировал и тот код оказался рабочим…. дернул откомпиленный кусок и выполнил отдельно - все работает как мне надо
    но блин в шаблонизаторе не пашет
    Спустя 79 сек.
    шаблон

    {if strpos($product.category_id, $category.id) !== false }
    <li><a href="/product/{$product.id}/">{$product.title}</a></li>
    {/if}


    откомпиленный шаблон

    <?php if (strpos ( $this->_tpl_vars['product']['category_id'] , $this->_tpl_vars['category']['id'] ) !== false): ?>
    <li><a href="/product/<?php echo $this->_tpl_vars['product']['id']; ?>/"><?php echo $this->_tpl_vars['product']['title']; ?></a></li>
    <?php endif; ?>


    adw/0
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 25 декабря 2009 г. 2:32, спустя 6 минут 44 секунды

    Разобрался, дело было не в смарти, а в том, что

    $product.category_id - строка
    $category.id - число

    надо было для strpos $category.id приветси к строке (strval)
    Спустя 31 сек.
    {if strpos($product.category_id, strval($category.id)) !== false}
       <li><a href="/product/{$product.id}/">{$product.title}</a></li>
    {/if}
    adw/0
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 25 декабря 2009 г. 3:00, спустя 28 минут 22 секунды

    adw0rd, кастами не пользуешься из принцыпа?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 25 декабря 2009 г. 3:13, спустя 13 минут 11 секунд

    CTAPbIu_MABP, кастомными конструкциями?
    adw/0
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 25 декабря 2009 г. 4:56, спустя 1 час 43 минуты 12 секунд

    adw0rd,

    $my_string_var = (string) 100500;
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 25 декабря 2009 г. 6:37, спустя 1 час 40 минут 58 секунд

    CTAPbIu_MABP, иногда так юзаю, иногда через strval, нету принципов, просто так мне показалось симпатичнее в данный момент времени :)
    adw/0
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 25 декабря 2009 г. 6:45, спустя 8 минут 4 секунды

    Я тоже, почему-то, больше люблю приведение к типу. С сишных времен привычка …
  • codefather

    Сообщения: 1 Репутация: N Группа: Кто попало

    Spritz 14 марта 2011 г. 4:46, спустя 443 дня 21 час

    с точки зрения логики, это плохое решение искать ИД по строке, по крайней мере без учета разделителей
    можно например найти "12" в строке "8, 123, 245"

    а по сути темы, strpos в смарти есть
    {if $value|strpos:"foo" !== false}

Пожалуйста, авторизуйтесь, чтобы написать комментарий!