Расширение Yii2: как объявить $sourcePath в активах?

Я разрабатываю расширение Yii2, которое использует AssetBundle для некоторые файлы js/css:

namespace myExtension/assets;

class ResourcesAsset extends AssetBundle {
    public $sourcePath = '@app/assets/resources';
    public $css        = ['resources.css'];
    public $js         = ['resources.js'];
    public $depends    = ['yii\bootstrap\BootstrapPluginAsset'];
}

Структура в расширении:

my-extension
|-assets
| |-resources
|   |-resources.css
|   |-resources.js
|   ResourceAsset.php
|-controllers
|-models
|-views
|-Module.php

Это не работает, когда я устанавливаю расширение в другом проекте из-за $sourcePath. Там псевдоним @app указывает на приложение базовый путь, а не к корневой папке расширения в vendor.

В настоящее время я использую @myExtension/assets/resources, который работает, поскольку я знаю, что он получает этот псевдоним в extionsions.php при установке. Но я думаю, что это не оптимально. Так как же оптимально объявить $sourcePath? Должен ли я создать собственный псевдоним (в Module.php?)? Должен ли я использовать __DIR__?


person robsch    schedule 11.05.2017    source источник


Ответы (1)


Псевдоним, который вы используете (@myExtension), — это то, что вам нужно.

Из Руководства:

Когда расширение установлено в приложении, Yii создаст для каждого перечисленного корневого пространства имен псевдоним, который ссылается на каталог, соответствующий пространству имен.

В качестве альтернативы вы можете использовать псевдоним для папки vendor, например:

public $sourcePath = '@vendor/my-extension/assets/resources';
person Bizley    schedule 11.05.2017
comment
Это так? У меня недостаточно опыта. Я скучаю по чему-то вроде @this... - person robsch; 11.05.2017