Не сохраняются данные при добавлении множественного атрибута выбора в сетку продуктов.

magento.stackexchange https://magento.stackexchange.com//questions/35286

  •  12-12-2019
  •  | 
  •  

Вопрос

Я создал один пользовательский модуль с концепцией добавления связанных продуктов.Создано успешно.Это тоже работает хорошо.

Но когда я добавляю "Множественный выбор атрибута«Столбец в сетке продуктов со значениями этого параметра. Значение этого объекта не сохранено.

enter image description here

Если я удалил это значение параметра, оно сохранится нормально.

Ниже я показал свой код, что я сделал для добавления столбца атрибутов с множественным выбором в сетку продуктов.

под _prepareColumns() метод

 $attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'brand');        // attribute code here
    foreach ( $attribute->getSource()->getAllOptions(true, true) as $option)
    {
        if($option['value'] != '')
        $valArr[$option['value']] =  $option['label'];
    }


$this->addColumn('brand', array(
        'header'=> Mage::helper('catalog')->__('Brand'),
        'align' => 'left',
        'index' => 'brand',
        'type'  => 'options',
        'options' => $valArr,


       'renderer'  => 'Mage_Adminhtml_Block_Catalog_Product_Renderer_Brands', // Will have to create the renderer.
       'filter_condition_callback' => array($this, '_filterBrandCondition')
    ));

Когда я прячусь 'options' => $valArr, , Все работают нормально.

Я не могу понять, почему это происходит.Пожалуйста, предложите мне свои идеи.Заранее спасибо.

Это было полезно?

Решение

Проблема появляется только при нажатии на вкладку «Сопутствующие товары».
Проблема в том, что если столбец бренда в сетке товаров называется «бренд».
это то же имя, которое используется в полях на главной вкладке.
Все поля там называются brand[field_name_here].
А saveAction считывает данные, необходимые для сущности бренда, следующим образом:

$data = $this->getRequest()->getPost('brand');

Но когда вы получаете доступ к сетке продуктов и затем отправляете форму, поле бренда в сетке переопределяет значения из основной вкладки.
Поэтому вместо $data Переменная представляет собой массив значений, в нее входит только последнее значение, введенное в качестве фильтра для поля бренда в сетке продуктов.

Изменение названия столбца бренда из сетки продуктов на что-то другое должно решить проблему. product_brand например.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top