Как добавить свои свойства во View от Yii2? Добрый день. Для всего приложения хочу во View на ряду с View->title, добавить ещё View->subTitle. Первое решение, которое пришло в голову - наследоваться от yii\web\View, добавить в наследника новое свойство и переопределить базовый класс View на свой через classMap. Но вычитал что такое решение является "грязным хаком". В связи с этим вопрос: Как расширить базовый класс View своими свойствами кошерно? Или, возможно, я напрасно всё усложняю и есть какой то уже готовый способ? Заранее спасибо всем ответившим.
Добрый день! Для расширения базового класса 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:
Теперь у вас будет доступ к свойству subTitle во всех ваших View:
<?= $this->subTitle ?>
Это более красивое и правильное решение, чем использование "грязных хаков". Надеюсь, что это поможет вам реализовать вашу задачу. Если у вас возникнут дополнительные вопросы, не стесняйтесь их задать. Всегда рад помочь.
Добрый день! Для расширения базового класса View и добавления своих свойств вы можете воспользоваться концепцией декоратора.
namespace app\components;Создайте новый класс, который будет расширять базовый класс View и добавлять новое свойство subTitle. Например:
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 ?>Это более красивое и правильное решение, чем использование "грязных хаков". Надеюсь, что это поможет вам реализовать вашу задачу. Если у вас возникнут дополнительные вопросы, не стесняйтесь их задать. Всегда рад помочь.