Как вывести представление из модуля(из папки vendor)

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Kreng
Сообщения: 202
Зарегистрирован: 2017.02.16, 10:11

Как вывести представление из модуля(из папки vendor)

Сообщение Kreng »

Пишу код
$this->render('@vendor/dektrium/yii2-user/views/security/login')

Выдаёт
View not Found – yii\base\ViewNotFoundException
The view file does not exist: D:\OPENSERV2\OpenServer\domains\news-site2\views\_alert.php
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Как вывести представление из модуля(из папки vendor)

Сообщение Nex-Otaku »

Правильно, потому что внутри у него render('_alert'), а он ищет по пути текущего модуля. Текущий модуль - ваше приложение. Вот от него и отсчитывает пути, ничего не находит.

Можно попробовать так закостылить:

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

$appViewPath = Yii::$app->controller->module->getViewPath();
Yii::$app->controller->module->setViewPath("@vendor/dektrium/yii2-user/views");
$this->render('@vendor/dektrium/yii2-user/views/security/login');
Yii::$app->controller->module->setViewPath($appViewPath);
Хотя не знаю, зачем вообще так делать, ведь можно просто скопировать себе вьюшки модуля в любую удобную папку.
Shotty
Сообщения: 36
Зарегистрирован: 2019.03.02, 19:30

Re: Как вывести представление из модуля(из папки vendor)

Сообщение Shotty »

Зачем писать такие костыли?
в конфиг в components:

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

'view' => [
         'theme' => [
              'pathMap' => [
                  '@app/views' => [
                       '@dektrium/user/views'
                  ],
                  '@dektrium/user/views' => '@app/views/user'
              ],
         ],
     ],
Теперь в папке views создаешь папку user, и в ней кидаешь виды модуля, для регистрации такой путь:
views/registration/register.php
И в нём уже делаешь форму как тебе нужно))
Ответить