Closed maxisoft-git closed 9 years ago
Так работает же
{set $test = ['test']}
{if 'test'|in:$test} checked{/if}
Аналогично с многомерным массивом
{set $test = ['test' => ['test']]}
{if 'test'|in:$test} checked{/if}
{if 'test'|in:$test.test} checked{/if}
Мы одной версией библиотеки пользуемся? Может из-за разных версий PHP? У меня:
linux-mint Caches # php -v
PHP 5.5.12-2ubuntu4.1 (cli) (built: Oct 29 2014 11:59:49)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
Да одной версий последней с мастер бранча. :)
{if 'test'|in:$cfg.org_ord} checked{/if}
Увы не работает не могу понять почему переменная $cfg передается в шаблон и содержит ассоциатиный массив с данными.
Я обновляю после официального релиза(https://github.com/fenom-template/fenom/tree/2.4.6), не с master ветки.
Я как бы тоже, просто странная ситуация произошла более ранняя версия которая была до этого работает так как нужно, хотя есть подозрение, на то что глюк с моей стороны из за того что проект весь на cp1251 может быть из за этого ломается strip и не работает сравнение, буду сегодня вечером ковырять тесты.
попробуйте оператор присутствия https://github.com/fenom-template/fenom/blob/master/docs/ru/operators.md#Оператор-присутсвия
$cfg.org_ord
- строка или массив?
Оператор присутствия тоже не сработал, в $cfg.org_ord находится массив
из контекста не ясно, $var
- у вас массив ?
прошу прощение что запутанно описал вопрос. Суть в следующем если в шаблон передать переменную $var и над ней сделать поиск в массиве, через модификатор или опреатором все будет работать, у меня возникла проблема при другой записи а именно
{if 'name'|in:$cfg.org_ord}
переменная $cfg является ассоциативным массимов, а org_ord просто массив ('0'=>'name','1'=>'phone'....)
Как я понял из сообщения
{if $var|in:$cfg.org_ord} работает
{if 'name'|in:$cfg.org_ord} НЕ работает
? Пытался воссоздать багу в тестах, пока не выходит. Нужно больше разъяснений от Вас (рабочий варинат кода шаблона и тот который падает) или падающий пример.
Максимум что удалось выжать это PHP warning при {if []|in:$list}
готовлю примеры по двум багам, причем они в большей степени странные, думал из за OS и кодировки файлов, а нет на ноуте под WIN таже ерунда.
Можете скинуть пример, как работает и как не работает?
просто фрагмент шаблона
Вот кусок шаблона
<div class="form-group">
<div class="row">
<div class="col-md-9">E-mail</div>
<div class="col-md-3">
<input type="checkbox" class="btn-switch" name="ord_req[]"{if 'email'|in:$cfg.org_req} checked{/if} value="email" data-size="small" data-on-color="success" data-off-color="danger" data-on-text="Да" data-off-text="Нет">
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-md-9">Адрес доставки</div>
<div class="col-md-3">
<input type="checkbox" class="btn-switch" name="ord_req[]"{if 'address'|in:$cfg.org_req} checked{/if} value="address" data-size="small" data-on-color="success" data-off-color="danger" data-on-text="Да" data-off-text="Нет">
</div>
</div>
</div>
Если заменить 'address' на заренее инициализированную переменную $address то все сработает. вот переменная с массивом
$cfg = Array(
'is_shop' => 1,
'is_skip_pay' => 0,
'show_vendors' => 1,
'show_cats' => 0,
'show_subcats' => 1,
'show_desc' => 0,
'show_full_desc' => 1,
'show_thumb' => 1,
'show_hit_img' => 1,
'show_decimals' => 0,
'show_filter' => 1,
'show_filter_vendors' => 1,
'show_compare' => 1,
'compare_prices' => 1,
'show_char_grp' => 1,
'show_comments' => 1,
'show_related' => 1,
'related_count' => 4,
'img_w' => 700,
'img_h' => 700,
'thumb_w' => 220,
'thumb_h' => 220,
'img_sqr' => 0,
'thumb_sqr' => 1,
'watermark' => 1,
'perpage' => 15,
'currency' => 'р .',
'notify_send' => 1,
'notify_send_customer' => 1,
'notify_email' => '',
'qty_mode' => 'any',
'subcats_order' => 'NSLeft',
'show_cat_chars' => 1,
'show_items_nav' => 1,
'link_ttl' => 48,
'items_orderby' => 'ordering',
'items_orderto' => 'asc',
'after_cart' => 'stay',
'ord_req' => Array(
'0' => 'name',
'1' => 'phone',
'2' => 'email',
'3' => 'address',
'4' => 'org',
'5' => 'inn',
),
'track_qty' => 0,
'ratings' => 1,
'discount' => Array(
'5000' => 5,
'8000' => 8,
'15000' => 15
),
'component_enabled' => 1,
'show_nested' => 1,
'yml' => Array(
'shop_name' => '',
'shop_company' => '',
'shop_url' => '',
'base_curr' => 'RUR ',
'ldc' => 150,
'store' => 0,
'pickup' => 1,
'delivery' => 1,
'curr' => Array(
'RUR' => 'CBRF',
'UAH' => 'CBRF',
'BYR' => 'CBRF',
'KZT' => 'CBRF',
'USD' => 'CBRF'
)
),
'club_discount' => 5,
'percent_pays_point' => 30,
'price_post' => 0,
'exclude_email' => array(),
'excludes_email' => 1,
'day_delay_bonus' => 7
);
Столкнулся с проблемой использования модификатора или функции in для проверки наличия переменной в масиве данных.
вот так работает отлично
а вот так не хочет, понимаю что и не должно но очень нужно, ибо описать отдельно 100 перемененных в начале нет смысла