Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Шаги "оформление заказа"

Автор atachРаздел Шаблоны TPL

Ответов: 11
Просмотров: 6623
Последний ответ 14 Августа 2013, 16:59:21
от admin
Вывести сумму заказа на странице "Заказ поступил в обработку"

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 2
Просмотров: 3790
Последний ответ 07 Ноября 2014, 23:46:49
от Axiomateria
Перенаправление на страницу регистрации покупателя перед оформлением заказа

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 16
Просмотров: 10078
Последний ответ 11 Марта 2013, 11:54:29
от Axiomateria
Проблемы уведомления клиента при смене статуса заказа и доставки

Автор stud_maiРаздел Шаблоны XSLT

Ответов: 7
Просмотров: 4284
Последний ответ 05 Января 2016, 00:59:01
от admin
Не суммировать скидку на товар с общей скидкой от суммы заказа

Автор smartwebРаздел Шаблоны TPL

Ответов: 3
Просмотров: 2652
Последний ответ 19 Декабря 2016, 12:29:09
от aghigay

0 Пользователей и 2 Гостей просматривают эту тему.

*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
Заказа в 1 клик
« : 20 Мая 2014, 07:30:59 »
Пытаюсь сделать заказ в 1 клик
Переношу с демодизи
На текущий шаблон.
Скопировал функции класса для поддержки заказа в 1клик
getOneClickOrder,validOneClickInfo,saveOneClickInfo

Попробовал запустить перейдя по адресу.
пустой экран
спотыкалось на этой строчке       
$objectId = $objects->addObject($order->getName(), $emarketOneClick->getId());
я добавил в таблицу
cms3_object_types новый тип с guid: emarket-purchase-oneclick
белый экран пропал но стала вылезать ошибка
error-required_one_click_list
и я не нашел что и куда добавлять теперь  :(
собственно в этом и вопрос

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Заказа в 1 клик
« Ответ #1 : 20 Мая 2014, 10:18:56 »
Пытаюсь сделать заказ в 1 клик
Переношу с демодизи
На текущий шаблон.
Скопировал функции класса для поддержки заказа в 1клик
getOneClickOrder,validOneClickInfo,saveOneClickInfo

По вопросу у вас как бы проблема с шаблоном, но по сути вопроса у вас проблема в  переносе функционала "заказ в один клик". по этому уточню, вы пытаетесь перенести данный функционал с одного сайта на другой (то есть не в рамках одной лицензии) и у вас не получается скопировать все и вся необходимое для этого?

*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
Re:Заказа в 1 клик
« Ответ #2 : 20 Мая 2014, 11:08:34 »
Да я переношу с одного сайта на другой.
оба с тестовой лицензицей, тот с которого я переношу со стандартным шаблоном. тот на который переношу с нестандартным шаблоном. практически с нуля писаный.
Да я скопировал на данный момент методы класса пока только. ну и тип добавил в базу новый
« Последнее редактирование: 20 Мая 2014, 11:21:32 от rellai »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Заказа в 1 клик
« Ответ #3 : 20 Мая 2014, 11:40:20 »
просто, для переноса функции "заказ в один клик", скорее всегго нужно переносить xsl, js, какие-то доп настройки в типах данных.

При этом непонятно что у вас уже есть, а чего нет. Что есть или чего нет в " тот с которого я переношу со стандартным шаблоном. тот на который переношу с нестандартным шаблоном"

Боюсь, чисто по вопросу вашему, я затруднюсь вам конкретно подсказать.

А если не конкретно, то:

- замените в своих макросах self:: на $this->
- проверьте что все макросы подключены в модуле emarket
я добавил в таблицу
cms3_object_types новый тип с guid: emarket-purchase-oneclick
белый экран пропал но стала вылезать ошибка
error-required_one_click_list
и я не нашел что и куда добавлять теперь  :(
собственно в этом и вопрос

вам надо было создать тип данных "Данные из формы "Заказ в 1 клик". а затем уже писать ему GUID в базе данных (см. картинку ниже)

P.S. это, возможно, еще не все, что вам придется поправить

*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
Re:Заказа в 1 клик
« Ответ #4 : 20 Мая 2014, 12:12:51 »
Сделал как вы сказали
ошибка та же:
error-required_one_click_list


*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Заказа в 1 клик
« Ответ #5 : 20 Мая 2014, 13:11:27 »
значит проверка в функции emarket getOneClickOrder() не проходит
$errors = $dataModule->checkRequiredFields($form->getId());
if ($errors !== true) {
throw new publicException(getLabel('error-required_one_click_list') . $dataModule->assembleErrorFields($errors));
}

Судя по коду, из-за того, что не заполнены необходимые поля (checkRequiredFields) возможно он не может найти $form->getId(). Проверяйте по частям и смотрите что не работает.

P.S. попробуйте отключить обязательные поля, в созданном типе данных  Данные из формы "Заказ в 1 клик". Станет понятно, он проверку не проходит или что-то другое ему мешает.

*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
Re:Заказа в 1 клик
« Ответ #6 : 20 Мая 2014, 13:29:44 »
не совсем.
На тестовом
если перейти по ссылке /ru/emarket/getOneClickOrder/element/57.xml
то он в xml файле говорит:
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="emarket" method="getOneClickOrder" generation-time="0.022824">
<error>
Заказ не оформлен, потому что не были заполнены обязательные поля: Фамилия, Имя, E-mail, Телефон
</error>
</udata>

Если перейти по подобной ссылке том сайте где пытаюсь сделать то вот вывод:
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="emarket" method="getOneClickOrder" generation-time="0.009424">
<error>error-required_one_click_list</error>
</udata>

А когда тип не был определен то он спотыкался на этой строчке:
$form = $types->getTypeByGUID('emarket-purchase-oneclick');
« Последнее редактирование: 20 Мая 2014, 13:31:39 от rellai »

*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
Re:Заказа в 1 клик
« Ответ #7 : 20 Мая 2014, 13:44:40 »
а как проверить есть ли данные для формы?
я делаю так .....ru/uobject/data/getCreateForm/126(идешник этого типа)/

он мне говорит
<error code="not-found">Не найдено</error>

Или я туплю?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Заказа в 1 клик
« Ответ #8 : 20 Мая 2014, 15:47:32 »
много вопросов по вашим комментариям, но для начала, о самом явном... при вызове макроса, необходимо использовать протокол udata, а не uobject

замените
/uobject/data/getCreateForm/126(идешник этого типа)/

на
/udata/data/getCreateForm/126(идешник этого типа)/


*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
Re:Заказа в 1 клик
« Ответ #9 : 20 Мая 2014, 16:01:53 »
Точно! сработало:
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="data" method="getCreateForm" generation-time="0.008884">
<group name="personal" title="Персональные данные">
<field name="lname" title="Фамилия" field_id="180" input_name="data[new][lname]" type="string" id="180" required="required"/>
<field name="fname" title="Имя" tip="Это поле содержит Имя пользователя. Оно отображается в характеристиках пользователя и может быть изменено самим пользователем." field_id="181" input_name="data[new][fname]" type="string" id="181" required="required"/>
<field name="father_name" title="Отчество" field_id="182" input_name="data[new][father_name]" type="string" id="182"/>
<field name="email" title="E-mail" field_id="209" input_name="data[new][email]" type="string" id="209" required="required"/>
<field name="phone" title="Телефон" field_id="440" input_name="data[new][phone]" type="string" id="440" required="required"/>
</group>
</udata>

*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
Re:Заказа в 1 клик
« Ответ #10 : 20 Мая 2014, 18:47:37 »
А дальше что делать?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Заказа в 1 клик
« Ответ #11 : 20 Мая 2014, 19:01:34 »
А дальше что делать?
Судя по коду, из-за того, что не заполнены необходимые поля (checkRequiredFields) возможно он не может найти $form->getId(). Проверяйте по частям и смотрите что не работает.

*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
Re:Заказа в 1 клик
« Ответ #12 : 20 Мая 2014, 19:15:40 »
когда поля не заполнены на тестовом сайте пишет
<error>
Заказ не оформлен, потому что не были заполнены обязательные поля: Фамилия, Имя, E-mail, Телефон
</error>
а у меня
<error>error-required_one_click_list</error>

Данные получаю по одинаковой ссылке
/ru/emarket/getOneClickOrder/element/57.xml
только ид отличается естественно

*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
Re:Заказа в 1 клик
« Ответ #13 : 20 Мая 2014, 19:56:27 »
Закоментировал(я вообще не понял зачем это надо...)
if ($errors !== true) {
throw new publicException(getLabel('error-required_one_click_list') . $dataModule->assembleErrorFields($errors));

И все стало немного лучше, но не до конца, почему то вот такой результат выдает
<?xml version="1.0" encoding="utf-8"?><result xmlns:xlink="http://www.w3.org/TR/xlink">
<data><error code="0" type="valueRequiredException">Поле "Фамилия" обязательно должно быть заполнено</error><backtrace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace><trace>Array</trace></backtrace></data>
</result>
« Последнее редактирование: 20 Мая 2014, 20:00:26 от rellai »

*

rellai

  • **
  • 58
  • +5/-0
    • Просмотр профиля
Re:Заказа в 1 клик
« Ответ #14 : 20 Мая 2014, 20:22:09 »
Я так понимаю загвоздка где то тут спрятана
      foreach ($emarketOneClick->getAllFields() as $field) {
            $value = $dataForm['new'][$field->getName()];
            $object->setValue($field->getName(), $value);
         }