Тема: Расширение функционала

Добрый день!

Только начал разбираться с движком, понадобилось расширить функционал формы редактирования заказа в Админке, а именно - нужно дополнительное текстовое поле. Почитал статью и на примере расширения карточки продукта написал добавление поля к Заказу:

handlers.inc.php

<?php
namespace Test\Config;
use RS\Orm\Type as OrmType;

/**
* Класс содержит обработчики событий, на которые подписан модуль
*/
class Handlers extends \RS\Event\HandlerAbstract
{
    /**
    * Добавляет подписку на события
    * 
    * @return void
    */
    function init()
    {
        $this
            ->bind('getroute')  //событие сбора маршрутов модулей
            ->bind('orm.init.shop-order');
    }
    
    /**
    * Возвращает маршруты данного модуля. Откликается на событие getRoute.
    * @param array $routes - массив с объектами маршрутов
    * @return array of \RS\Router\Route
    */
    public static function getRoute(array $routes) 
    {        
        $routes[] = new \RS\Router\Route('test-front-ctrl',
        array(
            '/test/'
        ), null, 'Роут модуля Test');
        
        return $routes;
    }

    /**
    * Обработчик события "Инициализация ORM объекта Заказ".
    * Не забудьте переустановить модуль каталог через меню Веб-сайт->Настройка модулей. Каталог товаров -> переустановить
    * 
    * @param \Catalog\Model\Orm\Order
    * @return void
    */
    public static function ormInitShopOrder(\Shop\Model\Orm\Order $orm_order)
    {
        $orm_order->getPropertyIterator()->append(array( //Добавляем свойства к объекту
            'Тестовая закладка', //Закладка, появится в форме редактирования заказа
             
            'test_property' => new OrmType\Varchar(array( //Тип поля.
                'maxLength' => 14, // Длина поля в базе 
                'description' => 'Тестовое поле', //Название поля                
            )),
        ));
    }

}

переустановил модуль, затем модуль магазина, в бд поле появилось - а при редактировании заказа его нигде нет

не подскажите, что делаю не так...

Повысить оценку Понизить оценку

Re: Расширение функционала

Я так предполагаю, что нужно повесить хук на контроллер OrderCtrl, типа:

bind('controller.exec.shop-admin-orderctrl.index')

или

bind('controller.exec.shop-admin-orderctrl.edit')

и потом в обработчике:

public static function controllerExecShopAdminOrderctrlIndex(\RS\Controller\Admin\Helper\CrudCollection $helper)
{

}

как то добавить нужное мне поле, только вот ума не приложу как это сделать

Повысить оценку Понизить оценку

3 Отредактировано Евгений (23.04.2017 15:23:20)

Re: Расширение функционала

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

Повысить оценку Понизить оценку

Re: Расширение функционала

В RS 3.0 будут добавлены хуки и правильная возможность расширения заказа, без геммороя. Поэтому пока в Вашем случае, нужно только перегрузить шаблон заказа полностью.