1 Отредактировано Айрат (19.10.2018 18:05:47)

Тема: Переопределние стандартного шаблона в админке

Здравствуйте!
В поле stext таблицы one_click в массив добавился еще один ключ. Например, new_key

array (
  0 => 
  array (
    'id' => '501',
    'title' => 'Фрезерно-гравировальный мини-станок с ЧПУ Bravo 3030',
    'barcode' => '',
    'offer_fields' => 
    array (
      'offer' => '',
      'offer_id' => NULL,
      'multioffer' => 
      array (
      ),
      'multioffer_val' => 
      array (
      ),
      'amount' => 1,
    ),
    'new_key' => 
    array (
      0 => 'value1',
      1 => 'value2',
      2 => 'value3',
    ),
  ),
)

Никак не могу въехать как переопределить шаблон text.tpl в админке объекта \Catalog\Model\Orm\OneClickItem?

            'stext' => new Type\Text(array(
                'description' => t('Cведения о товарах'),
                'Template' => 'form/field/stext.tpl'
            )),

Пытался через шаблон темы modulrewiew/catalog/form/field/stext.tpl, а результат ноль.
Может кто подсказать?

Или есть возможность перезагрузки через хук типа beforeload?

Если просто заменить, то после обновления слетит же все smile

2

Re: Переопределние стандартного шаблона в админке

Для перегрузки параметров необходимого поля воспользуйтесь событием orm.init.catalog-oneclickitem

https://readyscript.ru/dev-manual/dev_h … s_orm_init


ModuleName - ваш кастомный модуль

namespace ModuleName\Config;
class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        //Подписываемся на обработку события
        $this->bind('orm.init.catalog-oneclickitem');
    }
    /**
     * Изменяем параметры поля
     *
     * @param \Catalog\Model\Orm\OneClickItem $one_click_item
     */
    public static function ormInitCatalogOneClickItem(\Catalog\Model\Orm\OneClickItem $one_click_item)
    {
          // Через "__имя_свойства" получаем объект типа данных и затем переустанавливаем у него шаблон 
          $one_click_item['__stext']->setTemplate('%modulename%/path_to_new_template.tpl');

    }
}

3

Re: Переопределние стандартного шаблона в админке

Спасибо. Взял на вооружение.
А не подскажите, как переопределить определенный метод конкретного контроллера?

4

Re: Переопределние стандартного шаблона в админке

Нужно переопределить actionCreateOrderFormOneClick в oneclickctrl.inc.php, Пытался через

->bind('controller.exec.catalog-admin-oneclickctrl.createorderfromoneclick') и ->bind('controller.beforeexec.catalog-admin-oneclickctrl.createorderfromoneclick')

    public static function controllerExecCatalogAdminOneClickCtrlCreateOrderFormOneClick(){
        die('TEST');
    }

    или

    public static function controllerBeforeExecCatalogAdminOneClickCtrlCreateOrderFormOneClick(){
        die('TEST');
    }

ничего не выходит

5

Re: Переопределние стандартного шаблона в админке

Уточните, что конкретно вам нужно сделать? Для чего вы хотите перегрузить action контроллера?

Если вам нужно выполнить действие при сохранении объекта, то нужно вешаться на orm.afterwrite....

6 Отредактировано Айрат (22.10.2018 13:25:25)

Re: Переопределние стандартного шаблона в админке

На сайте реализована покупка только в 1 клик. И, в зависимости, от значений

    'new_key' => 
    array (
      0 => 'value1',
      1 => 'value2',
      2 => 'value3',
    ),

которые были добавлены в поле stext таблицы oneklick_item (о котором я писал выше) будет изменятся цена.
Заказ создается с помощью метода  actionCreateOrderFormOneClick и редиректит на страницу созданного заказа.
Переопределив данный метод, я хочу вместо \Catalog\Model\OneClickApi(), создать экземпляр своего класса апи  \MyModuName\Model\MyOneClickApi(), который будет наследовать стандартный  \Catalog\Model\OneClickApi()

       //Например
        $oneclick_api = new \MyModuleName\Model\MyOneClickApi(); 

Или есть более элегантный способ, который я не вижу? smile