@Yii2SlowMoooo

Yii2 Есть ли какие-то инструменты для автоматического подключения ресурсов?

Помню для первой версии на хабре была habrahabr.ru/post/150885
Кто какие варианты еще встречал? Хочется ознакомиться и не писать велосипед.
  • Вопрос задан
  • 268 просмотров
Решения вопроса 1
@Yii2SlowMoooo Автор вопроса
Задача очень второстепенная, по этому прошу всех желающих причесать мой результат)).
Пока вышел из ситуации так.
Добавил класс assets/AutoAsset.php :
<?php

namespace backend\assets;
use Yii;

/**
 * Class AutoAsset
 * Класс автоматически подключает к представлению модуля файлы ресурсов JS и CSS
 * По умолчанию путь к автоматически подключаемым ресурсам
 * @web/auto_asset/modules/{moduleName}/{viewName}/*.[js | Css]
 * Для подключения в представлении вызываем: AutoAsset::registerFiles($this)
 *
 * @author
 */
class AutoAsset
{
    public static $baseUrl = 'auto_asset/modules';

    /**
     * Формируем путь к ресурсам и подключаем все *.js и *.css фаилы в объекте $view
     * У всех зависимость от jQuery
     *
     * @param $view
     */
    public static function register($view) 
    {
        $viewFile = explode(DIRECTORY_SEPARATOR, $view->getViewFile());
        $viewFile = end($viewFile);
        $filePath =
            self::$baseUrl . "/" .
            Yii::$app->controller->module->id . "/" .
            str_replace(".php", "", $viewFile) . "/";

        // TODO Причесать монстра $realDirPath;
        $realDirPath = Yii::getAlias('@webroot') . DIRECTORY_SEPARATOR . self::$baseUrl . DIRECTORY_SEPARATOR . Yii::$app->controller->module->id . DIRECTORY_SEPARATOR . str_replace(".php", "", $viewFile) . DIRECTORY_SEPARATOR;

        $dir=opendir($realDirPath);
        while ($file = readdir($dir)){
            if (strstr($file, ".js")) {
                $view->registerJsFile($filePath . $file ,['depends' => [\yii\web\JqueryAsset::className()]]);
            } elseif (strstr($file, ".css")) {
                $view->registerCSSFile($filePath . $file ,['depends' => [\yii\web\JqueryAsset::className()]]);
            }
        }
        closedir($dir);

    }
}


PS прошу прощения за коменты в кирилице, требование компании...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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