14 авг. 2016 г., 17:49

Добавить свое поле в заказ

Добрый день! Появилась необходимость добавить еще 1 поле в заказ. Поле называется OPLATA. Поле будет служить для определения способа оплаты (наличными, платежной картой visa/mastercard) При оформлении заказа клиент будет выбирать способ оплаты и после принятия заказа менеджером в управлении заказами будет кнопка «оплатить» (если выбрана он-лайн оплата).
Что я сделал: Добавил в таблицу modx_shopmodx_orders поле oplata varchar(4). Файл shopmodxorder.map.inc.php:
'oplata' => 'opl', 'oplata' => array ( 'dbtype' => 'text', 'precision' => '100', 'phptype' => 'string', 'null' => false, 'default' => 'opl' ),
Файл object.class.php
protected function prepareObject(& $object){ $oplata = $OrderProduct->oplata; $object->fromArray(array( "positions" => $positions, "total" => $quantity, "quantity" => $quantity, "sum" => $sum, "oplata" =>$oplata, "paysystem_name" => $oplata, "discount" => $object->discount, "original_sum" => $original_sum, "products_ids" => $products_ids, ));
Как бы все работает. Данные в таблицу пишутся, данные получить могу. Но в логах появляются не красивые записи:
[2016-08-14 20:46:16] (ERROR @ /index.php) ShopmodxOrder: Attempt to set NOT NULL field oplata to NULL
Такая запись появляется при обновлении главной страницы с пустой корзиной… Никак не могу понять где формируется запрос который потом так ругается. Подскажите какой файл посмотреть?
У вас же пишет «Attempt to set NOT NULL field oplata to NULL» Гугл подсказывает: «Попытка установить NOT NULL поле Oplata к NULL» А поле у вас запрещено к хранению НУЛЛов. 'null' => false,
Вы значение $oplata = $OrderProduct->oplata проверяете? Нет. Или null разрешите, или вот так напишите: $oplata = $OrderProduct->oplata? $OrderProduct->oplata: '';
Нашел проблему. Пытался записать данные в _OrderProducts
Да, _OrderProducts — это по сути данные на чтение только.

Добавить комментарий