2015-01-08 2 views
7

Nun, ich habe alle meine CSS- und JavaScript-Sachen in AppAsset deklariert, aber ich kann es nicht schaffen, die CSS- und JS-Links in der Frontend-Ansicht anzuzeigen. Hier sind meine Dateien:Yii2 AppAsset erzeugt keine css/js-Links im Layout

app/assets/AppAsset.php:

<?php 

namespace app\assets; 

use yii\web\AssetBundle; 
class AppAsset extends AssetBundle { 
    public $basePath = '@webroot'; 
    public $baseUrl = '@web'; 
    public $css = [ 
     'assets/css/bootstrap.min.css', 
     'assets/plugins/weather-icon/css/weather-icons.min.css', 
     ... 
    ]; 
    public $js = [ 
    ]; 
    public $depends = [ 
     'yii\web\YiiAsset', 
     'yii\bootstrap\BootstrapAsset', 
    ]; 
} 

und hier ist mein Layout (app/modules/admin/Layouts/admin.php):

<?php 

use app\assets\AppAsset; 

AppAsset::register($this); 
?> 

<?php $this->beginPage() ?> 
<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <?php $this->head() ?> 
     <?= $this->render('partials/head') ?> 
    </head> 
<body class="tooltips"> 
    <?= $this->render('partials/colour_panel') ?> 
     <div class="wrapper"> 
      <?= $this->render('partials/top_navbar') ?> 
      <?= $this->render('partials/left_sidebar') ?> 
      <?= $this->render('partials/right_sidebar') ?> 
      <div class="page-content"> 
       <div class="container-fluid"> 
        <?= $content ?> 
        <?= $this->render('partials/footer') ?> 
       </div> 
      </div> 
     </div> 
     <?= $this->render('partials/scripts') ?> 
    </body> 
</html> 
<?php $this->endPage() ?> 

Danke im Voraus!

Antwort

5

Dieser Teil

<?php $this->head() ?> 

sollte sie automatisch in den Kopf kopieren. Sind Sie sicher, dass die von Ihnen verwendeten Pfade korrekt sind?

public $sourcePath = '@vendor'; 
public $css = [ 
    'assets/css/bootstrap.min.css', 

bedeutet, dass Ihre Dateien in den Lieferanten/assets/css/bootstrap.min.css gefunden werden, sind Sie sicher, dass richtig ist? wie sieht das falsch für mich aus.

+0

Ja, ich bin ziemlich sicher, dass der Pfad zu den Dateien in Ordnung ist. Gegenwärtig ist das Verzeichnis, das alle meine CSS- und JS-Dateien enthält, ein Anbieter/Skript. Alle Dateien vom Hersteller werden in "web/assets/2b2e6bcf" kopiert, aber leider scheint keiner von ihnen im Kopfbereich des Layouts zu erscheinen. Irgendwelche Ideen? –

+0

Sei dir nicht sicher, sei dir sicher. Navigieren Sie in Ihrem Projekt zum Hauptordner Ihrer Anwendung und gehen Sie dann zu vendor/assets/css/bootstrap.min.css und bestätigen Sie, dass dort eine Datei vorhanden ist. Keine anständige Installation sollte etwas haben. –

+0

habe ich schon mehrfach überprüft. Die Dateien waren dort aber nicht im Kopf des HTML-Layouts deklariert. Jetzt habe ich beschlossen, sie in das Verzeichnis "web/assets" zu legen und es scheint auch nicht zu funktionieren. Überprüfen Sie den Hauptpost. –

7

Ich hatte das gleiche Problem. In meinem Fall Layout hat keine <?php $this->beginBody() ?> und
<?php $this->endBody() ?> Abschnitte innerhalb <body></body> Tags.

Es sollte so aussehen:

<body> 
<?php $this->beginBody() ?> 
    <!--content--> 
<?php $this->endBody() ?> 
</body> 

Hoffe, dass es jemand Dateigröße größer als 20 MB

+0

OK so das funktioniert, aber warum? Diese Aussagen sind nicht in meinem 'Haupt' Layout (wo die JS funktioniert), aber wenn ich ein 'leeres' (benutzerdefiniertes) Layout der JS verwenden nicht ohne beginBody laden() und ENDBODY() Aussagen? – gvanto

+0

@gvanto ussualy JS-Tags platziert sind vor dem Schließen-Tag (oder in ). ich denke, '' '$ this-> ENDBODY()' '' Aussagen erzählt Yii, wo das Ende des HTML-Bodys ist, ohne dass Yii nicht weiß, wo endet und