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');
    }

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

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

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

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