productSave как с ним работают?
Здравствуйте!
Пишу такую конструкцию, но она в моем плагине не срабатывает, при сохранении товара зависает, причем зависает на строчке я так понял
$product->save();
(по идеи, данный код должен сохранять название товара с id 10, при сохранении любого товара из доступных):
public function productSave(&$params) { $product = new shopProduct(10); $product['name'] = 'Супер товар'; $product->save(); }
В плагине plugin.php:
'handlers' => array(
'product_save' => 'productSave',
),
Спасибо за помощь!
3 ответа
Начните с простого, описания того что вы хотите сделать.
В $params вам передаются значения товара, который уже сохраняется, поэтому внутри него точно не нужно создавать второй экземпляр и делать рекурсию сохранения.
То что туда идут значения текущего товара это я знаю, вопрос заключается как сохранить другой товар, при сохранении текущего.
Ну и второй вариант как сохранить текущий товар и присвоить ему значения.
Как минимум добавить проверку что текущий товар не 10.
То есть в том же товаре нельзя его же и сохранить?
Ну и на второй вопрос так и не понял как просто поменять название текущего товара, что использовать?
Нет.
Да так работает.
А это не работает потому-что цикл бесконечный становится сохранения?
вопрос 1.
срабатывает после сохранения товара или перед?
В смысле например, если при редактировании товара, я поменяю значение "поле1", а потом сохраню, а в
я так понял поле будет
вопрос 2.
На самом деле все логично, метод $product->save() вызывает хук product_save, соотвественно делая такое сохранение в хуке вы получаете бесконечную рекурсию, тут или воспользуйтесь моделью shopProductModel или используйте другой хук возможно вам более подойдет хук product_presave
Спасибо за ответ.
в документации есть
$params['instance'] - как им можно пользоваться?
На 1 вопрос пока ответа нета. Так как же работает
после сохранения товара или перед?
Я к тому что можно ли сделать проверку на то что вбил в товар после сохранения? (в product_save)
Хук вызывается после сохранения товара, product_presave - перед
$params['instance'] - это клас shopProduct сохраняемого товара
Еще раз посмотрите в сторону product_presave - в нем вы можете менять данные до сохранения товара
Ок спасибо за ответ разобрался.
Еще одна проблема то что когда мы обновляем значение товара с помощью в
Само поле обновляется, но когда в бекэнде нажимаем сохранить это не происходит, нужно рефреш делать, то есть новое значение сразу не подгружается. Это можно как то исправить?