Модульность своих правок базовых компонентов

Вопросы по работе Юпи! и отдельных модулей

Модератор: core team

Аватара пользователя
Quardex
Новенький
Сообщения: 9
Зарегистрирован: Ср окт 12, 2016 9:01 pm

Модульность своих правок базовых компонентов

Сообщение Quardex » Чт сен 06, 2018 9:37 pm

Такой вопрос. Предположим, мне нужно добавить свой экшн во все фронтэнд-контроллеры. Я могу это сделать в \protected\modules\yupe\components\controllers\FrontController.php. Но тогда в случае выхода новой версии я должен буду помнить про все правки, которые я вносил в стандартный набор файлов. Есть ли возможность в задумке архетиктуры (равносильно "Как лучше сделать, чтобы") обойти этот момент наследованием, чтобы у меня были просто дополнительные файлы в определенном месте, при наличии которых к станданртному функционалу контроллера добавлялся мой.

Аватара пользователя
xoma
Администратор
Сообщения: 1970
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Re: Модульность своих правок базовых компонентов

Сообщение xoma » Чт сен 13, 2018 10:50 am

Quardex писал(а):Такой вопрос. Предположим, мне нужно добавить свой экшн во все фронтэнд-контроллеры. Я могу это сделать в \protected\modules\yupe\components\controllers\FrontController.php. Но тогда в случае выхода новой версии я должен буду помнить про все правки, которые я вносил в стандартный набор файлов. Есть ли возможность в задумке архетиктуры (равносильно "Как лучше сделать, чтобы") обойти этот момент наследованием, чтобы у меня были просто дополнительные файлы в определенном месте, при наличии которых к станданртному функционалу контроллера добавлялся мой.



Можете привести пример для чего Вам потребовалось добавлять новый экшн в каждый контроллер?
отследить-посылку.рф - дружит с "Юпи!", следит за посылками!

Аватара пользователя
Quardex
Новенький
Сообщения: 9
Зарегистрирован: Ср окт 12, 2016 9:01 pm

Re: Модульность своих правок базовых компонентов

Сообщение Quardex » Ср окт 10, 2018 12:38 pm

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

Код: Выделить всё

    public function afterAjaxUpdate() {
        return '<script>afterAjax()</script>';
    }

    public function render($view, $data = null, $return = false)
    {
        if (\Yii::app()->getRequest()->getIsAjaxRequest()) {
            echo $this->renderPartial($view, $data, true).$this->afterAjaxUpdate();
        } else {
            parent::render($view, $data, $return);
        }
    }


Другой пример.
На сайте визитке (в котором много языков и нюансов отображения контента, которые в итоге неоправданно тяжелые по скорости) можно закешировать вывод фильтром, дабы ускорить показатели, которые положительно скажутся для позиций в поисковике.

Код: Выделить всё

public function filters()
  {
    return array(
      'COutputCache'
      'cacheID' => 'fileCache',
    );
  }

Аватара пользователя
Quardex
Новенький
Сообщения: 9
Зарегистрирован: Ср окт 12, 2016 9:01 pm

Re: Модульность своих правок базовых компонентов

Сообщение Quardex » Ср окт 10, 2018 12:38 pm

Но суть вопроса в том, что возможность перекрывать рендер базовый за раз для всего или еще какую-либо составляющую должна быть доступна, мне кажется. Она и доступна так-то, просто боль в вопросах апдейта версии.
Последний раз редактировалось Quardex Ср окт 10, 2018 12:49 pm, всего редактировалось 6 раз.


Вернуться в «Вопросы и ответы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя