@Mozzart-live

Как использовать темизацию в модулях?

Коллеги, добрый день.

Перехожу на yii2. Возник вопрос с темизацией в модулях.
Желание - иметь папку themes, в ней хранить различные шаблоны, в шаблонах иметь папку modules и согласно названиям модулей и контроллеров - вьюхи.

Все собираю вручную, без использования gii.

Конфиг:
'view' => [
            'theme' => [
                'pathMap' => ['@app/views' => '@webroot/themes/basic/views'],
                'baseUrl' => '@web/themes/basic',
            ],
        ],


Структура директорий:
0opWQzEC-JCudRUPSLEeMkptDNqA87fX709oo8lT

Контроллер по умолчанию в модуле site:
namespace app\modules\site\controllers;

use Yii;
use app\models\Post;
use yii\web\Controller;
use yii\web\NotFoundHttpException;

class DefaultController extends Controller
{
    
    public function init()
    {
        parent::init();
    }
    
    public function actionIndex()
    {
        $this->render('index', []);
    }
    
}


А вот и ошибка. Понимаю в чем дело, но исправить не получается.

Invalid Parameter – yii\base\InvalidParamException

The view file does not exist: /var/www/yii2/modules/site/views/default/index.php
  • Вопрос задан
  • 844 просмотра
Пригласить эксперта
Ответы на вопрос 1
sanchezzzhak
@sanchezzzhak
Ля ля ля...
Как вариант:
<?php

namespace app\modules\dashboard;

class Module extends \yii\base\Module
{
    public $controllerNamespace = 'app\modules\dashboard\controllers';

    public function init()
    {
        parent::init();
        $theme = ''; // Yii::$app-> ... как-то тут можно вытащить название темы которая сейчас установлена
        $this->viewPath = '@app/themes/'.$theme.'/modules/'. $this->id ;
       
        // custom initialization code goes here
    }
}
Ответ написан
Ваш ответ на вопрос

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

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