Jump to content


Photo
- - - - -

В какой момент происходит сохранение оформления заказа?


Best Answer SmetDenis , 12 June 2013 - 19:46

Ответ №1

Сохранение происходит тут

\media\zoo\applications\jbuniversal\framework\controllers\basket.php createOrder()

20130613-68y-27kb_1280x0_200x0.png

 

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

например saved обрабатывается тут

\media\zoo\applications\jbuniversal\framework\events\jbevent.basket.php

 

О том, как работать с событиями Zoo

http://www.yootheme....sing-zoo-events

 

Можете изменить $item и сохранить его снова.

 

Примерно так можно получить объект информации заказа и его статус

$orderDetails = JBModelOrder::model()->getDetails($item)
$orderDetails->getOrderStatus()

 

 

 

Ответ №2

В случае успеха выполняется строка

$this->orderDetails->callback('paymentCallback', $args);

 

"paymentCallback" - это метод в элементе ElementJBBasketItems

 

 

Ответ №3

Да, можно.

$item->getElement('идентификатор')->data();
Go to the full post


  • This topic is locked This topic is locked
3 replies to this topic

#1 werewolfgsm

werewolfgsm
  • JBZoo User (rus)
  • User rate: 5
  • posts: 44
  • topics: 15

Posted 11 June 2013 - 21:18

Добрый вечер.

Делаю магазин подарочных сертификатов.

Сертификаты - это пластиковые карточки, с уникальным напечатанным пин-кодом. Все пинкоды хранятся в базе, в таблице.

Когда клиент заказывает сертификат, то к заказу в текстовое поле "Пин-код сертификата" должен заносится первая в очереди не погашенная карточка.

 

Вопрос #1 в том, в какой файле и в какой момент происходит формирование заказа?

 

В момент формирования я буду обращаться к своей таблице, читать пин-код, помечать его как выданный и присваивать в карточку заказа в поле "Пин-код сертификата" прочитанное значение.

 

Еще мне надо учесть возможность оплаты через платежную систему.

Если поле "Форма оплаты" (заполняется в момент оформления заказа) выбран вариант оплаты через платежку, то Пин-код формируется не в момент сохранения, а в тот момент, когда заказу присвоен статус "success".

 

Вопрос №2 в том, в какой файле и в какой момент происходит сохранение статуса заказа (после вызова paymentCallback из контроллера payment, куда идет функция дальше)?

 

Вопрос №3, можно ли в момент сохранения заказа получить значение поля "Форма оплаты", заполненного пользователем из формы.

 

Заранее спасибо.

 

 


  • 0

#2 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 12 June 2013 - 19:46   Best Answer

Ответ №1

Сохранение происходит тут

\media\zoo\applications\jbuniversal\framework\controllers\basket.php createOrder()

20130613-68y-27kb_1280x0_200x0.png

 

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

например saved обрабатывается тут

\media\zoo\applications\jbuniversal\framework\events\jbevent.basket.php

 

О том, как работать с событиями Zoo

http://www.yootheme....sing-zoo-events

 

Можете изменить $item и сохранить его снова.

 

Примерно так можно получить объект информации заказа и его статус

$orderDetails = JBModelOrder::model()->getDetails($item)
$orderDetails->getOrderStatus()

 

 

 

Ответ №2

В случае успеха выполняется строка

$this->orderDetails->callback('paymentCallback', $args);

 

"paymentCallback" - это метод в элементе ElementJBBasketItems

 

 

Ответ №3

Да, можно.

$item->getElement('идентификатор')->data();

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 werewolfgsm

werewolfgsm
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 5
  • posts: 44
  • topics: 15

Posted 14 June 2013 - 18:40

Можете изменить $item и сохранить его снова.

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

Пробовал через массив, как в jbbasketitems, но такой код у меня не сработал:

$item = this->getItem()
$newData['bb041a17-2c1e-492c-9355-cf7d060f2924'] = $myData;

$this->set($id, $newData);

//save item
$this->app->table->item->save($item);

Есть какой-то способ, как getElement('xxx')->data(); только setElement('xxx', $data)?

Заранее спасибо


  • 0

#4 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 14 June 2013 - 22:04


$item->getElement('bb041a17-2c1e-492c-9355-cf7d060f2924')->bindData(array('value' => $value));

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!