minishop2.class.php 630 PHP warning: Invalid argument supplied for foreach()
Добрый день!
Прощу помочь со следующей проблемой:
Эта ошибка стала забивать весь журнал ошибок
Как исправить?
Прощу помочь со следующей проблемой:
Эта ошибка стала забивать весь журнал ошибок
/public_html/core/components/minishop2/model/minishop2/minishop2.class.php 630
PHP warning: Invalid argument supplied for foreach()
<div id="msGallery0">
{if $files?}
<div id="productSlider" class="flexslider">
<ul class="slides">
{foreach $files as $file}
<li>
<a href="{$file['450x450']}" data-lightbox="roadtrip">
<img src="{$file['450x450'] | phpthumbon : 'w=450&h=450&zc=C&f=webp'}" alt="" title="">
</a>
</li>
{/foreach}
</ul>
</div>
<div id="productCarousel" class="flexslider">
<ul class="slides">
{foreach $files as $file}
<li>
<a href="{$file['450x450']}">
<img src="{$file['450x450'] | phpthumbon : 'w=100&h=100&zc=C&f=webp'}" alt="" title="">
</a>
</li>
{/foreach}
</ul>
</div>
{else}
<img class="img-responsive" src="/theme/img/no-image-450.png" alt="" title="">
{/if}
</div>
Ругается, видимо на второй вызов {foreach $files as $file}Как исправить?
Комментарии: 9
Это не ошибка, ошибка это ERROR, это предупреждение и на него можно просто забить, или отключить их показ в системных настройках.
Поняла, спасибо!
Это предупреждение наверно не из этого чанка галереи. Во первых стоит проверка {if $files?} во вторых если ругается на второй вызов {foreach $files as $file}, то должно ругаться и на первый вызов {foreach $files as $file}.
И, самое главное, в третьих ругается в файле /public_html/core/components/minishop2/model/minishop2/minishop2.class.php на строке 630. То есть чанк вообще не при чем. Посмотрите что есть там у вас в файле minishop2.class.php на строке 630
И, самое главное, в третьих ругается в файле /public_html/core/components/minishop2/model/minishop2/minishop2.class.php на строке 630. То есть чанк вообще не при чем. Посмотрите что есть там у вас в файле minishop2.class.php на строке 630
Спасибо за наводку, посмотрю там.
joxi.ru/ZrJ6WPDce33KZr
foreach ($map as $key => $values)
foreach ($map as $key => $values)
public function loadMap()
{
if (method_exists($this->pdoTools, 'makePlaceholders')) {
$plugins = $this->loadPlugins();
foreach ($plugins as $plugin) {
// For legacy plugins
if (isset($plugin['xpdo_meta_map']) && is_array($plugin['xpdo_meta_map'])) {
$plugin['map'] = $plugin['xpdo_meta_map'];
}
if (isset($plugin['map']) && is_array($plugin['map'])) {
foreach ($plugin['map'] as $class => $map) {
if (!isset($this->modx->map[$class])) {
$this->modx->loadClass($class, $this->config['modelPath'] . 'minishop2/');
}
if (isset($this->modx->map[$class])) {
foreach ($map as $key => $values)
$this->modx->map[$class][$key] = array_merge($this->modx->map[$class][$key], $values);
}
}
}
}
}
} else {
$this->modx->log(modX::LOG_LEVEL_ERROR, 'pdoTools not installed, metadata for miniShop2 objects not loaded');
}
}
Какой то не правильный плагин в папке core/components/minishop2/plugins/. Там плагины для расширения полей базы данных минишопа в виде index.php например
Возможно в этом причина. Код брал со страницы Плагин товара для miniShop2 MODx Revo
<?php
return array(
'map' => array(
'msProductData' => require_once 'msproductdata.map.inc.php',
),
'manager' => array(
'msProductData' => MODX_ASSETS_URL . 'components/minishop2/plugins/myplugin/msproductdata.js',
),
);
и msproductdata.map.inc.php<?php
return array(
'fields' => array (
'avaible' => 1,
'europrice' => 0.0
),
'fieldMeta' => array (
'avaible' =>
array (
'dbtype' => 'varchar',
'precision' => '50',
'phptype' => 'integer',
'null' => true,
),
'europrice' =>
array (
'dbtype' => 'decimal',
'precision' => '12,2',
'phptype' => 'float',
'null' => true,
'default' => 0.0,
),
)
,'indexes' => array(
.....
наверно index.php присутствует, а файл определенный в строке ниже отсутствует'map' => array(
'msProductData' => require_once 'msproductdata.map.inc.php',
то есть для msProductData отсутствует файл msproductdata.map.inc.php.Возможно в этом причина. Код брал со страницы Плагин товара для miniShop2 MODx Revo
Или в index.php 'msProductData' вместо массива строка
'msProductData' => "require_once 'msproductdata.map.inc.php'",
Спасибо, попробую разобраться.
Это предупреждение связано с работой опций. Смотрите что у вас с ними. Есть ли они, Может некорректно созданы. Может вызов где то в шаблоне некорректный
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.