2015-01-08 3 views
7

Bene, ho dichiarato tutte le mie risorse CSS e JavaScript in AppAsset ma non riesco a far visualizzare i collegamenti css e js nella vista front-end. Qui ci sono i miei file:Yii2 AppAsset non genera collegamenti css/js nel layout

app/Attività/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', 
    ]; 
} 

e qui è la mia Layout (app/modules/admin/layout/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() ?> 

Grazie in anticipo!

risposta

5

Questa parte

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

dovrebbe copiarli nella testa automaticamente. Sei sicuro che i percorsi che usi siano corretti?

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

significa che i file si trovano nella vendor/beni/css/bootstrap.min.css sei sicuro che sia giusto? mi sembra sbagliato

+0

Sì, sono abbastanza sicuro che il percorso dei file sia corretto. Al momento, la directory che comprende tutti i miei file css e js è vendor/scripts. Tutti i file del venditore sono copiati in "web/assets/2b2e6bcf" ma sfortunatamente sembra che nessuno di essi appaia nella sezione principale del layout. Qualche idea? –

+0

Non essere abbastanza sicuro, sii sicuro. nel tuo progetto accedi alla cartella principale della tua applicazione, quindi vai a vendor/assets/css/bootstrap.min.css e conferma che c'è un file lì. Nessuna installazione decente dovrebbe avere qualcosa lì. –

+0

Ho già controllato numerose volte. I file erano lì ma non erano stati dichiarati nella testa del layout html. Ora ho deciso di metterli nella directory "web/assets" e di nuovo non sembra funzionare. Controlla il post principale. –

7

Ho avuto lo stesso problema. Nel mio caso il layout non ha <?php $this->beginBody() ?> e
sezioni <?php $this->endBody() ?> all'interno di tag <body></body>.

Dovrebbe essere come questo:

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

Speranza che aiuta qualcuno

+0

OK, così ha funzionato, ma perché? queste istruzioni non sono nel mio layout 'principale' (dove funziona JS) ma quando uso un layout 'vuoto' (personalizzato) il JS non carica senza istruzioni beginBody() e endBody()? – gvanto

+0

@gvanto Ussualy I tag JS sono posizionati prima della chiusura del tag (o all'interno di ). Penso che "' '$ this-> endBody()' '' Yii dove si trova la fine del corpo HTML. Senza di esso Yii non sa dove si trova e non può plasmarne i tag