Yii2 назначить Актив для конкретного макета - PullRequest
0 голосов
/ 05 июня 2018

У меня есть актив приложения, который зарегистрирован для всех представлений в приложении.

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        '/plugins/font-awesome/css/font-awesome.min.css',
        '/dist/css/adminlte.min.css',
        'https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700'


    ];
    public $js = [
        '/plugins/jquery/jquery.min.js',
        '/plugins/bootstrap/js/bootstrap.bundle.min.js',
        '/dist/js/adminlte.min.js'
    ];
    public $depends = [

    ];
}

Теперь я пытаюсь создать новый с другими стилями AppAssetStats.php для другого раздела сайта,и я хочу присвоить свой новый актив моему макету main_statistisc.php.Но я не знаю, как я могу назначить его моему новому макету, в настоящее время я просто использую registerJsFile registerCssFile, но стили по умолчанию AppAsset все еще остаются.Как я могу использовать свой новый актив для определенного макета / вида?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Регистрация файла активов в файле макета.

<?php
    use frontend\assets\AppAssetStats;
    AppAssetStats::register($this);
?>
0 голосов
/ 06 июня 2018

Посмотрите, активы регистрируются вручную в макетах, поэтому ваш application asset, который зарегистрирован для всех представлений, вероятно, просто зарегистрирован внутри layouts\main.php представления как:

/* @var $content string */

use yii\helpers\Html;
...
use common\widgets\Alert;

AppAsset::register($this); // This one
?>

Вы можете зарегистрировать AppAssetStats.php простотаким же образом добавьте новый макет main_statistisc.php и установите новый макет в нужные контроллеры

ваш макет main_statistisc.php:

use frontend\assets\AppAsset;
...
AppAssetStats::register($this); // Your new asset
?>

и ваш контроллер:

class SiteController extends Controller
{
    public $layout = 'main_statistisc'; //

Убедитесь, что внутри main_statistisc.php у вас нет линии AppAsset::register($this), чтобы она не конфликтовала с вашим новым активом

Дополнительная информация об активах, которую вы можете получить из документации по активам Yii2:
Yii2 Assets

.. и дополнительная информация о макетах и ​​их просмотр здесь:
Yii2 Просмотры и макеты

...