Кастомные поля на странце заказа в админке

Автор Jeick9, 13 августа 2014, 10:40:48

« назад - далее »

Jeick9

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


coder

Полно тем с такими проблемами.
Виктор, нужно отдельную тему создать в каком-нибуть разделе и прикрепить вверху, а то трудно найти на форуме все темы.

ЦитироватьСхема добавления стандарная
1. Добавить новое поле в таблицу
2. Добавить новое поле в класс.
3. Добавить проверку и сохранение нового поля в контроллер.
4. Добавить новое поле в шаблон.

Jeick9

Цитата: Виктор Демидов от 13 августа 2014, 10:52:54
http://prestashop-forum.ru/index.php/topic,143.msg732.html#msg732
http://prestashop-forum.ru/index.php/topic,2804.msg14762.html#msg14762
http://prestashop-forum.ru/index.php/topic,919.0.html
http://prestashop-forum.ru/index.php/topic,151.msg644.html

Спасибо за темы. Для решения свой задачи нашел возможность упростить работу. В админке на детальной странице заказа уже есть поле "Способ оплаты". Как проще можно получить и проверить значение этого поля в фронт-офисе на странице "История заказов" клиента?

coder

Класс Order метод
/**
* This method allows to get all Order Payment for the current order
* @since 1.5.0.1
* @return Collection of Order Payment
*/
public function getOrderPaymentCollection()
{
$order_payments = new Collection('OrderPayment');
$order_payments->where('order_reference', '=', $this->reference);
return $order_payments;
}

Нужно учесть, что может быть несколько методов оплаты.

mAgency

Страница "История заказов" клиента.
Контроллер - MyAccountController.php
Шаблон - my-account.tpl
Лучший вариант, добавляете получение и проверку в контроллер.
Можно и в шаблоне
{foreach from=$order->getOrderPaymentCollection() item=payment}
    {if $payment->payment_method == "MyMethod"}
        ...
    {/if}
{/foreach}
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.

Jeick9

Цитата: mAgency от 13 августа 2014, 11:29:03
Страница "История заказов" клиента.
Контроллер - MyAccountController.php
Шаблон - my-account.tpl
Лучший вариант, добавляете получение и проверку в контроллер.
Можно и в шаблоне
{foreach from=$order->getOrderPaymentCollection() item=payment}
    {if $payment->payment_method == "MyMethod"}
        ...
    {/if}
{/foreach}

Попробовал эту конструкцию, она почему-то у меня не срабатывает. Добавил в шаблон:

Цитировать
{foreach from=$order->getOrderPaymentCollection() item=payment}
    {if $payment->payment_method == "Оплата наличными при получении"}
        Проверено
    {/if}
{/foreach}

Но если просто вывести {$payment->payment_method} , то выводится "Оплата наличными при получении". Не понятно почему условие не срабатывает.

coder

$order
Заказ правильно определен?
Выведите ид заказа и спавните с нужным.

Для сравнения лучше получить ид метода, но тогда это делать в контроллере.

Jeick9

Цитата: coder от 13 августа 2014, 14:42:09
$order
Заказ правильно определен?
Выведите ид заказа и спавните с нужным.

Для сравнения лучше получить ид метода, но тогда это делать в контроллере.
Можете дать ссылку на пример с ид в контроллере?

coder

Базовый контроллер HistoryController
$orders = Order::getCustomerOrders($this->context->customer->id)