MegaMufa
@MegaMufa

Возможно ли в Yii расположить assets файлы в директориях модулей?

Добрый день.

Есть сайт на Yii. Разбит на модули. Структура каталогов стандартная:
css/
-users/
--style1.css
--style2.css
-bids/
--style1.css
--style2.css
protected/
-modules/
--users/
--- ...
--bids/
--- ...


Хотелось бы сделать так, что бы таблицы стиле и js файлы лежали не в общей папке, а каждый в директории своего модуля. Что бы модуль был автономен.

Но доступ в protected для apache закрыт. Подскажите, как можно реализовать такую схему? Может возможно открыть файлы из защищенной директории при помощи issets?

Кто сталкивался с подобной задачей, подскажите, как реализовать такой подход?
  • Вопрос задан
  • 3460 просмотров
Решения вопроса 1
nikel303
@nikel303
Например:

class AdminModule extends CWebModule {

    public $baseAssetsUrl = null;

    public function init() {

        $this->setImport(array(
            'admin.models.*',
            'admin.components.*',
        ));

        if ($this->baseAssetsUrl === null) {
            $this->baseAssetsUrl = Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('admin.assets'), false, -1, (bool) YII_DEBUG);
        }
    }

}


А в views путь берёте так:
Yii::app()->getClientScript()->registerCssFile($this->module->baseAssetsUrl . '/css/style.css');
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
vollossy
@vollossy
Веб-разработчик с небольшим опытом работы
Ответ написан
Комментировать
fornit1917
@fornit1917
Что бы модуль был автономен.

У вас неправильная постановка вопроса. Для того, чтобы модуль был автономен, ему не нужна папка с ассетами. Нужно только, чтобы он содержал все нужные ресурсы, а куда уже они будут публиковаться - это совершенно неважно для автономности.
Кроме того, совсем-совсем автономными модули в yii быть не могут, их в принципе нельзя использовать отдельно от родительского приложения, см. документацию www.yiiframework.com/doc/guide/1.1/ru/basics.module :
Модуль — это самодостаточная программная единица, состоящая из моделей, представлений, контроллеров и иных компонентов. Во многом модуль схож с приложением. Основное различие заключается в том, что модуль не может использоваться сам по себе — только в составе приложения.


Делать директорию модуля доступной из веб - это не очень хорошо. Возможно вам надо не в сторону модулей посмотреть, а в сторону разбиения yii-приложения на несколько других приложений, например habrahabr.ru/post/180679 или habrahabr.ru/post/207454
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы