wake-up-neo.net

Wie verwalte ich Assets in Yii2?

Zum Beispiel habe ich eine neue Seite erstellt, und ich möchte zum Beispiel backbone.js, eine benutzerdefinierte CSS-Datei und eine Sammlung von Bildern verwenden. Wo soll ich das alles in Yii2 erklären? Ich habe das AppAsset.php-Modul gefunden, aber dies gilt nur für css/js-Dateien und habe keine Änderungen bemerkt, als meine css/js-Dateien und mein Pfad dort deklariert wurden:

class AppAsset extends AssetBundle {
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/site.css',
        'js/jquery.mobile-1.4.2.min.css',
    ];
    public $js = [
        'js/jsquery-2.1.0.min.js',
        'js/jquery.mobile-1.4.2.min.js',
        'js/script.js',
    ];

    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];
}

Was mache ich falsch? 

21
paus

Ich habe eine Weile gebraucht, um es herauszufinden, aber unten ist der relevante Teil des Yii2-Quellcodes

if ($this->sourcePath !== null && !isset($this->basePath, $this->baseUrl)) {
    list ($this->basePath, $this->baseUrl) = $am->publish($this->sourcePath, $this->publishOptions);
}

Daher veröffentlicht Yii2 Assets nur, wenn $sourcePath eingestellt ist und $basePath und $baseUrl nicht (!) Gesetzt sind. Letzteres hat mich in die Knie gezwungen, und es sieht so aus, als ginge es Ihnen genauso.

Ich habe also diesen AppAsset, der ordnungsgemäß veröffentlicht

use yii\web\AssetBundle;


class AppAsset extends AssetBundle
{
public $sourcePath = '@app/assets/app';

public $css = [
    'css/openbook.css',
    'fontello/css/fontello.css',
    'fontello/css/animation.css'
];
public $js = [
    'js/plug.openbook.js',
    'js/plug.interpret.js',
    'js/plug.drop.message.js'
];
public $depends = [
   // 'yii\web\YiiAsset', 
   // 'yii\bootstrap\BootstrapAsset',
];
} 

Natürlich habe ich im Hauptlayout

use frontend\assets\AppAsset;
...
AppAsset::register($this);
30
Ivo Renkema

um dieses AppAsset oder ein anderes zu verwenden, sollten Sie es in der view registrieren.

use app\assets\AppAsset;
AppAsset::register($this);
4
Herokiller

Zuerst sollten Sie die SomeAsset-Klasse in Ihrem App/assets/-Ordner mit Ihren neuen Js- und Css-Dateien erstellen. 

Als nächstes verwenden Sie dies in SomeController

use Yii;
use app\assets\SomeAsset;

und in AktionEin bisschen so:

SomeAsset::register(Yii::$app->view);
0
Correcter