Автор Тема: Оформление заказа  (Прочитано 1759 раз)

13 Декабрь 2016, 09:15:05
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день.
В заказ добавил "Желаемые дата и время доставки" и "Необходим предварительный созвон". Изменения внес в файл order-address.tpl
Желаемые дата и время доставки:
<div class="col-xs-12 col-sm-6">
Желаемые дата и время доставки:
<input type="text" name="dateivremt" id="dateivremt">
<p class="checkbox">
<label for="exp">
<input type="checkbox" name="exp" id="exp" value="1" {if isset($smarty.post.exp) && $smarty.post.exp == '1'}checked="checked"{/if} />
Необходим предварительный созвон</label>
</p>
</div>
Подскажите как эти данные после оформления заказа внести в базу данных?
13 Декабрь 2016, 12:01:18
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
http://prestashop-forum.ru/index.php/topic,2835.0.html
- добавить поле в таблицу ps_order
- добавить переменну в класс order
15 Декабрь 2016, 09:34:46
Ответ #2
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Получается, что тогда "Добавить проверку и сохранение нового поля в контроллер" и все что дальше уже необязательно?
15 Декабрь 2016, 11:52:49
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
"Добавить проверку и сохранение нового поля в контроллер"  - не нужно, если вы описали поля в классе. Они сохранятся атоматом.
15 Декабрь 2016, 16:40:46
Ответ #4
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В переменной dataivrem храниться запись вида: "2017-02-03 10:00:00"
В класс order прописал следующее: 'dateivrem' => array('type' => self::TYPE_STRING, 'validate' => 'isDateFormat')
После оформления заказа в таблице появляется запись "0000-00-00 00:00:00".
Как мне правильно правильно прописать поле в классе order, чтобы информация уходила правильная.
15 Декабрь 2016, 17:17:13
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Так поле у тебя правильное. Дата не сохраняется что-ли?
15 Декабрь 2016, 17:28:16
Ответ #6
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ввод даты оформлен следующим образом: <input type="text" name="dateivremt" id="dateivremt">Скриптом вводиться маска:
<script>
$(function(){
  $("#dateivremt").mask("9999-99-99 99:99:99");
});
</script>
А в базу почему-то пишутся нули только.
15 Декабрь 2016, 17:39:07
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Дату заполняешь?
15 Декабрь 2016, 17:53:26
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
После оформления заказа в таблице появляется запись "0000-00-00 00:00:00".
У вас в input с датой нет значения, поэтому запись "0000-00-00 00:00:00".
Или форма не заполнена, или значение не передается в контроллер.
15 Декабрь 2016, 18:01:16
Ответ #9
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Да, действительно. Почему-то передаются нули, хотя в контроллере все прописано верно.
15 Декабрь 2016, 18:25:25
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Присвойте значение переменной в контроллере.
19 Декабрь 2016, 08:55:19
Ответ #11
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Присвойте значение переменной в контроллере.

Подскажите, как это корректно сделать.
19 Декабрь 2016, 13:16:38
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
$myvar = Tools::getValue('myvar') ? Tools::getValue('myvar') : 'значение по умиолчанию';
19 Декабрь 2016, 14:06:57
Ответ #13
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В файле OrderController.php прописал в функции initContent() перед закрывающийся скобкой
$dateivremt = Tools::getValue('dateivremt') ? Tools::getValue('dateivremt') : NULL;
$exp = Tools::getValue('exp') ? Tools::getValue('exp') : NULL;
В файле Order.php прописано:
public $dateivremt;
public $exp;
public static $definition = array(
        'table' => 'orders',
        'primary' => 'id_order',
        'fields' => array(
                         ****
'dateivremt' =>                    array('type' => self::TYPE_DATE, 'validate' => 'isDateFormat'),
'exp' =>                    array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
        ),
    );
В файле order-address.tpl прописано:
Желаемые дата и время доставки:
<input type="text" name="dateivremt" id="dateivremt" value="2017-01-01 10:00:00">
<p class="checkbox">
<label for="exp">
<input type="checkbox" name="exp" id="exp" value="1" {if isset($smarty.post.exp) && $smarty.post.exp == '1'}checked="checked"{/if} />
Необходим предварительный созвон</label>
</p>

В любом случае ввожу я данные или нет в базу данных уходят нули вместо корректных данных.
19 Декабрь 2016, 15:09:35
Ответ #14
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
В процессе заказа нужно сохранять свойства для объекта Cart, так как в заказе происходит обращение к нескольким контроллерам и классам. Для Order инициализация свойств происходит в методе actionValidateOrder.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.