Почему у меня рендерится представление родителя?

установил себе приложение https://github.com/dektrium/yii2-user отнаследовался от контролера
в конфиге так
'user' => [
            'class' => 'dektrium\user\Module',
            'adminPermission' => 'admin',
            'modelMap' => [
                'User' => 'app\models\User',
            ],
            'controllerMap' => [
                'admin' => 'app\controllers\AdminController'
            ],
        ],

создаю контролер наследуюсь
use app\models\UsersSearch;
use dektrium\user\controllers\AdminController as BaseAdminController;

class AdminController extends BaseAdminController
{
    
    public function actionIndex()
    {
        $searchModel  = new UsersSearch();
        $dataProvider = $searchModel->search(\Yii::$app->request->get());

        return $this->render(\Yii::getAlias('index'), [
            'dataProvider' => $dataProvider,
            'searchModel'  => $searchModel,
        ]);
    }
}

в папке views создаю папку admin там создаю представление index.php
но рендерится почему то вот этот вид /vendor/dektrium/yii2-user/views/admin/index.php почему не подскажите и как правильно настроить рендер на папку app/views/admin
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 2
Decadal
@Decadal
А вы для интереса посмотрите в дебаге на поле viewPath у вашего контроллера-наследника, или посмотрите в исходник родителя и найдите там viewPath, скорее всего он там определяется.
Переопределите поле $viewPath прямо в дочернем контроллере:
class AdminController extends BaseAdminController
{
    public $viewPath = ''; //ваш путь, если он может быть прописан напрямую
    public __construct( /*внимательно - скопируйте сюда параметры родителя*/) {
        $this->viewPath = Yii::getAlias('@app').'/views/admin';   //ваш путь, если нужно задать через алиас
        parent::__construct( /* передайте все параметры без изменений */); 
    }

    public function actionIndex()
    {
        $searchModel  = new UsersSearch();
        $dataProvider = $searchModel->search(\Yii::$app->request->get());

        return $this->render('index', [
            'dataProvider' => $dataProvider,
            'searchModel'  => $searchModel,
        ]);
    }
}
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
А зачем
\Yii::getAlias('index')
и что там?
попробуйте
/views/admin
или
\Yii::getAlias('@app/views/admin')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы