Как добавить свои свойства во View от Yii2? Добрый день.
Для всего приложения хочу во View на ряду с View->title, добавить ещё View->subTitle.
Первое решение, которое пришло в голову - наследоваться от yii\web\View, добавить в наследника новое свойство и переопределить базовый класс View на свой через classMap. Но вычитал что такое решение является "грязным хаком".
В связи с этим вопрос: Как расширить базовый класс View своими свойствами кошерно? Или, возможно, я напрасно всё усложняю и есть какой то уже готовый способ?
Заранее спасибо всем ответившим.

21 Авг 2019 в 07:01
267 +1
0
Ответы
1

Добрый день! Для расширения базового класса View и добавления своих свойств вы можете воспользоваться концепцией декоратора.
Создайте новый класс, который будет расширять базовый класс View и добавлять новое свойство subTitle. Например:

namespace app\components;
use Yii;
class MyView extends \yii\web\View
{
public $subTitle;
public function init()
{
parent::init();
$this->subTitle = 'Default Subtitle';
}
}

После этого, в конфигурации приложения (fie config/web.php) замените класс View на ваш новый класс MyView:

'components' => [
'view' => [
'class' => 'app\components\MyView',
],
],

Теперь у вас будет доступ к свойству subTitle во всех ваших View:

<?= $this->subTitle ?>

Это более красивое и правильное решение, чем использование "грязных хаков". Надеюсь, что это поможет вам реализовать вашу задачу. Если у вас возникнут дополнительные вопросы, не стесняйтесь их задать. Всегда рад помочь.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир