2014-04-21 23 views
10

Desidero utilizzare la configurazione avanzata di Yii2 con applicazioni frontend, backend, comuni e console separate. Ho molte risorse comuni, inclusi fogli di stile, file js e caratteri che verranno utilizzati sia nelle applicazioni frontend che back-end. Ha senso quindi mettere in comune queste risorse in una cartella di risorse.Yii2: risorse comuni con configurazione avanzata

Quindi, inizia la mia espansione. Sembra che io abbia bisogno di un file AppAsset.php separato per gestire le risorse nelle porzioni di frontend e backend dell'intera applicazione perché alcune cose saranno diverse tra le due. (Non sono sicuro se riferirmi a frontend, backend, ecc. Come applicazioni separate all'interno di qualcosa di sovraordinato, oa chiamarle sotto-applicazioni di una grande applicazione sovradimensionata.) Comunque, sembra che avrò bisogno di due gestori AppAsset . Gestirò tutte le conversioni di file (scss → css per esempio) e la compressione dei file da solo, quindi non ho bisogno di configurare il gestore delle risorse per farlo.

Sfortunatamente, la documentazione su AppAsset e bundle di asset non è chiara su come includere file o directory specifici in un pacchetto. L'unica cosa che vedo è come specificare le destinazioni usando lo $css, $js, variabili. Per le directory di input, vedo solo $ sourcePath. Ciò significa che devo creare un pacchetto separato (e $sourcePath) per ogni singolo file javascript, css, image, ecc. Questo è un sacco di pacchetti! Sicuramente c'è un modo per includere più file di risorse in un unico pacchetto. Qualcuno può mostrarmi come?

risposta

2

Beh, credo che lo scopo di un "pacchetto" sia quello di consentire di selezionare i file desiderati.

Non è necessario creare un pacchetto diverso per ogni singolo file.

Per esempio, nel mio super semplice AssetManager personalizzato ho questo:

namespace frontend\assets; 
use yii\web\AssetBundle; 
use yii\web\YiiAsset; 

class CustomAsset extends AssetBundle{ 
    public $basePath = '@webroot'; 
    public $baseUrl = '@web'; 
    public $css = [ 
     'css/custom.css', 
     'css/custom_modals.css' 
    ]; 
} 

Poiché i due CSS folders/files si trovano nella frontend-sezione del mio progetto e il CustomAsset si trova anche lì, quando mi registro questo AssetManager passerà attraverso l'array $css e li aggiungerà alla sezione dell'intestazione. Fa lo stesso per l'array $js che vorresti aggiungere se necessario. Inoltre, ricorda, i file devono trovarsi in una cartella accessibile dal Web.

+3

Sì, la mia domanda iniziale è nata nei primi tempi di Yii2 quando la documentazione era molto scarsa. È migliorato, ma i documenti su AssetManager sono ancora scarsi. Tuttavia, l'ho capito. A proposito, le risorse non dovrebbero essere in una cartella accessibile Web. AssetManager li pubblicherà automaticamente (copiandoli) nella cartella/web/assets nel progetto. Conservo effettivamente le mie risorse originali in frontent \ assets insieme ai file Asset.php. – LarryTX

+0

Fantastico! Grazie per la dritta Larry! Non lo sapevo. – Schwoebel

Problemi correlati