Изменяемая цена на shopmodxbox

Добрый день.

В магазине есть возможность задавать размеры товара и от этого зависит его цена.

Для занесения в корзину правильной цены я слегка изменил процессор /core/billing/processors/mgr/orders/products/create:

    public function beforeSet(){

        ...

        // Устанавливаем значение цены и валюты

        // В дальнейшем в этом месте можно будет вклиниться с переопределением цен

        $this->object->fromArray(array(

            'price' => $this->getPrice($product),

            'currency_id' => $product->get('sm_currency'),    

        ));

        return parent::beforeSet();

    }

    

    protected function getPrice($product){

        return 1;

        //в рабочей версии предполагается на основании определенных данных

        // сформировать и вернуть цену. для теста пока возвращаю 1.

    }

Проблема в том, что почему-то в корзину все равно попадает цена sm_price. Как такое может быть? Может, я что-то упустил?

Comments

так я в нем и подправил.

class modMgrOrdersProductsCreateProcessor extends modObjectCreateProcessor{

...

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

Кстати, подумай о подобной доработке - значение цены не брать из sm_price напрямую, а в метод вынести. Тогда при наследовании достаточно getPrice (например) переопределить - и цена по-другому считаться будет.

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

Да в целом это все ОК. Как я и говорил много раз - это заготовка для индивидуальных разработок. Разворачиваешь, быстро пробуешь что-то свое сделать, если не растет кокс - сбрасываешь и экономишь время. Если растет - то развиваешь как свой проект индивидуальный.

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

Нашел :) у меня из формы цена передавалась(!). Вредно много по ночам сидеть. все, теперь работает.

Блин, с фронта подобные данные передавать - злое зло. Но это многое объясняет:) Кстати, спасибо за багрепорт! Я конечно очень стараюсь следить за секурностью, но здесь вот пропустил возможность переопределить цену товара извне. Вот багфикс. Добавь себе в код, а новая сборка выйдет уже с этим багфиксом. И сейчас топик краткий напишу.

Блин, с фронта подобные данные передавать - злое зло

да сам понимаю. ведь любую цену подставить можно :)