Подключение стилей в модуле Yii2

147
21 февраля 2019, 10:30

Создал модуль и для него отдельный AppAsset, подключил стили и скрипты, но стили и скрипты не загружаются хотя если посмотреть исходный код страницы то все подключено. Вот код AppAsset

<?php
namespace frontend\modules\news\assets;
use yii\web\AssetBundle;
class AppAsset extends AssetBundle
{
    public $basePath = '/frontend/modules/news/web/';
    public $baseUrl = '/news';
    public $css = [
        'css/basis.css',
        'css/custom.css',
        'css/media.css',
        'css/magnific/styles.css',
        'css/slick/styles.css',
    ];
    public $js = [
        'js/pace.min.js',
        'js/imagesloaded.min.js',
        'js/magnific.min.js',
        'js/slick.min.js',
        'js/utilities.min.js',
    ];
    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];
}

Ресурсы находятся в директории frontend/modules/news/web/ Что я делаю не так?

Answer 1

Логично, что комплект ресурсов для модуля должен находиться где-то в модуле. Но из веба нет доступа в директорию модуля, поэтому файлы не будут подгружены на страницу. Базовый путь и базовый урл мы можем указывать в случае, если файлы доступны из веб. В других случаях необходимо указать источник, чтобы менеджер нашел необходимые файлы, скопировал их в доступную из веб директорию и подключил на страницу.

Примерная структура модуля у меня такая

В модуле konkurs есть комплекты ресурсов assets. В данном случае только один конкурс fort.

Код ассета обычно выглядит так. В $this->sourcePath достаточно указать текущую директорию.

class FortAsset extends AbstractAsset
{
public function init()
{
    $this->sourcePath = __DIR__;
    parent::init();
}
public $js = [
    'js/fort.js'
];
public $css = [
    'css/fort.css',
];
public $depends = [
    MainAsset::class,
];
}
Answer 2

Спасибо за разъяснения)) Долго думал почему не подключаются стили. Хотя вроде написано все правильно. А потом осознал, что в модуле в корне не хватает папки assets , как ее создал сразу стили подключились.

Класс описывал так:

public $sourcePath = '@app/modules/admin/web';
public $css = [];
public $js = [
   'js/admin.js',
];

А подключает Yii2 их как:

http://host.enot/assets/c9dc8856/js/admin.js

соответственно без пустой папки app/modules/admin/assets не отрабатывало подключение скриптов))))))

READ ALSO
Как в woocommerce вывести товары по произвольному полю

Как в woocommerce вывести товары по произвольному полю

Столкнулась с проблемой: есть товары с одинаковым значением произвольного поляНужно вывести на странице товара, товары с таким же произвольным...

172
var_dump не выводит массив

var_dump не выводит массив

Получаю сообщению по вебсокету, здесь по одному их обрабатываюПочему если убрать первый var_dump, то второй ничего не выведет, а с первым var_dump...

210
Помогите слить массивы через php

Помогите слить массивы через php

Как с помощью php объединить эти 2 массива

142
Сохранить текст в БД вместе с переносами строк

Сохранить текст в БД вместе с переносами строк

Подскажите, как правильно записать в БД текст, чтобы при этом сохранились все переносы строк? Текст парсится с сайта и потом уже пишется в БД

166