Откуда ноги растут modsnippet/38.include.cache.php
Добрый день,
В письмах на эл. почту по новому заказу получаю ошибку:
Warning: json_decode() expects parameter 1 to be string, array given in ../core/cache/includes/elements/modsnippet/38.include.cache.php on line 95
Далее идет полная информация в письме согласно чанку, т.е. все работает.
Что может приводить к генерации данного предупреждения?
В письмах на эл. почту по новому заказу получаю ошибку:
Warning: json_decode() expects parameter 1 to be string, array given in ../core/cache/includes/elements/modsnippet/38.include.cache.php on line 95
Далее идет полная информация в письме согласно чанку, т.е. все работает.
Что может приводить к генерации данного предупреждения?
Комментарии: 11
Скорее всего, новый pdoTools + старый MS2.
Первично такой проблемы не было. Все функционировало корректно.
Судя по всему, ошибка появилась после обновления чанка ms_options_outer.tpl
Как ее можно исправить без полного обновления MS2?
Судя по всему, ошибка появилась после обновления чанка ms_options_outer.tpl
<div class="control-group">
<label class="control-label">[[%ms2_product_[[+name]]]]:</label>
<div class="controls">
<select name="options[[[+name]]]" class="span2">[[+rows]]</select>
</div>
</div>
Как ее можно исправить без полного обновления MS2?
Это потому, что первично у тебя цвета не сохранялись в JSON поле заказа.
Найди сниппет с id = 38, затем найди где там json_decode или $modx->fromJSON и допиши проверку на массив, чтобы эти функции применялись только к строкам.
Если обновляешь pdoTools, то нужно обновлять и MS2 — они очень тесно связаны.
Найди сниппет с id = 38, затем найди где там json_decode или $modx->fromJSON и допиши проверку на массив, чтобы эти функции применялись только к строкам.
Если обновляешь pdoTools, то нужно обновлять и MS2 — они очень тесно связаны.
У меня pdotools-1.8.0-rc5 и minishop2-2.1.1-pl2, что из них старее?
Нашел json_decode, но это уже сверх моих познаний.
Нашел json_decode, но это уже сверх моих познаний.
Там где json_decode:
if(!is_array(то что передается в json_decode)){
...сам json_decode...
}
По дефолту ниже следует еще одно условие, которое тогда никогда не сработает или я ошибаюсь?
if(!is_array($options = json_decode($row['options'],1)));
{
if (!empty($options) && is_array($options)) {
foreach ($options as $key => $value) {
$row['option.'.$key] = $value;
}
}
}
Немного не так
if(is_array($row['options'])) {
$options = $row['options'];
} else {
$options = json_decode($row['options'],1);
}
if (!empty($options) && is_array($options)) {
foreach ($options as $key => $value) {
$row['option.'.$key] = $value;
}
}
Если у нас и так массив, то мы не трогаем, если в json, то конвертируем в массив.
Верно.
В последней версии почти так и есть:
В последней версии почти так и есть:
$options = !is_array($row['options'])
? $modx->fromJSON($row['options'])
: $row['options'];
Сколько не пытаюсь, но не могу привыкнуть к краткой записи if. Особенно после python с его «Красивое лучше, чем уродливое. Явное лучше, чем неявное. Простое лучше, чем сложное.».
Тут всё просто:
Очень удобно, и можно писать в одну строку:
$результат = условие
? если да, то это
: если нет, то вот это;
Очень удобно, и можно писать в одну строку:
$результат = условие ? если да, то это : если нет, то вот это;
Обнови и то, и другое.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.