Magento 2 Не может сохранить продукт (Неверное значение параметра)


На конкретном продукте я вообще не могу сохранить какие-либо изменения, я всегда получаю ошибку:

Недопустимое значение параметра

Я считаю, что это связано с пользовательскими опциями и, возможно, с этой проблемой: https://github.com/magento/magento2/issues/4085

Я был на 2.1.0rc3, когда произошла ошибка, и с тех пор обновлен до 2.1.1

Дело не только в том, что я не могу сохранять пользовательские параметры, я вообще не могу сохранять какие-либо изменения даже к основным полям, таким как название продукта.

Возможно, проблема в чем-то другом, но я не могу найти никаких подсказок в журналах, и сообщение об ошибке не очень полезно.

Author: Aasim Goriya, 2016-09-20

5 answers

Если у вас есть продукт с более чем 20 значениями пользовательских параметров, Magento добавляет разбивку на страницы к этой опции. Смотрите прилагаемый скриншот. Справа внизу - разбивка на страницы. Если вы хотите сохранить этот продукт, вам нужно просмотреть каждую страницу каждого пользовательского параметра этого продукта.

Техническое объяснение, Magento использует динамические строки для загрузки этого поведения, если вы не откроете вторую или третью страницу, поля ввода не будут добавлены в HTML. Когда вы сохраняете продукт, эти параметры не входят в значения ПОСТА. В СООБЩЕНИИ Magento проверяет, равны ли значения, но это не так, потому что они не добавлены в HTML. Таким образом, быстрое решение на данный момент состоит в том, чтобы просмотреть каждую страницу каждого пользовательского параметра, а затем вы можете сохранить продукт

enter image description here

 4
Author: Zeeshan Khuwaja, 2017-05-18 11:41:47

У меня та же проблема, мы должны настроить код и переопределить файл.

Для переопределения основного файла нам нужно выполнить следующий шаг:
/vendor_name/module_name/etc/di.xml

 <?xml version="1.0"?>
  <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
     <preference for="Magento\Catalog\Model\Product\Option\Validator\Select" type="Vendor_name\Module_name\Model\Product\Option\Validator\Select" />
  </config>

Добавьте этот файл в модель: имя поставщика/Имя_модуля/Модель/Продукт/Опция/Валидатор/Выберите

<?php
namespace Vendor_name\Module_name\Model\Product\Option\Validator;

class Select extends \Magento\Catalog\Model\Product\Option\Validator\Select
{
/**
 * Validate option price
 *
 * @param string $priceType
 * @param int $price
 * @param int $storeId
 * @return bool
 */
protected function isValidOptionPrice($priceType, $price, $storeId)
{
    // we should be able to remove website values for default store fallback
    if ($storeId > \Magento\Store\Model\Store::DEFAULT_STORE_ID && $priceType === null && $price === null) {
        return true;
    }

    if (!$priceType && !$price) {
        return true;
    }
    if (!$this->isInRange($priceType, $this->priceTypes) || $this->isNegative($price)) {
        return false;
    }

    return true;
 }
}
 3
Author: karthik, 2018-04-04 11:19:22

Откройте файл php.ini вашего сервера с пользователем root, найдите max_input_vars и установите его значение как 100000, и это решит вашу проблему.

max_input_vars = 100000
 1
Author: , 2018-02-01 05:54:08

У меня была та же проблема. Мое решение состоит в том, чтобы заполнить значения SKU для доступных опций, которые вы добавили в свой продукт.

Насколько я понимаю, эта ошибка исправляется только в том случае, если в вашем продукте имеется большое количество пользовательских опций. По моему опыту, около 20 значений, разделенных между 2-3 настраиваемыми параметрами, не приводят к ошибке. 50 значений для 4-5 параметров приводят к этой ошибке. Однако, как упоминалось ранее, если вы заполните конкретный артикул (они могут быть даже одинаковыми) вы можете сохранить продукт без каких-либо проблем.

Надеюсь, это поможет!

 0
Author: T1mmy, 2016-10-18 13:32:35

Для справки, в версиях без подкачки с несколькими хранилищами и более 1000 полей на определенной странице - решение, с которым я столкнулся, состоит в том, чтобы увеличить PHP max_input_vars, что позволит PHP обрабатывать больше, чем по умолчанию (из памяти это было 1000) количество полей за один раз

 0
Author: BAF, 2017-05-18 12:44:30