2016-11-22 5 views
0

AppAsset außer Kraft kommt mit yii2 GrundWie kann ich die Standard-CSS auf yii2 in Controller

class AppAsset extends AssetBundle 
{ 
    public $basePath = '@webroot'; 
    public $baseUrl = '@web'; 
    public $css = [ 
     'css/site.css', 
    ]; 
    public $js = [ 
    ]; 
    public $depends = [ 
     'yii\web\YiiAsset', 
     'yii\bootstrap\BootstrapAsset', 
    ]; 
} 

Mein Haupt-Controller

class MainController extends \yii\base\Controller { 

    public function init() 
    { 
     parent::init(); 
    } 

    public function beforeAction($action) { 
     if(Yii::$app->request->get('site')) { 
      // remove css/site.css 
      // add css/other.css 
     } 

     return parent::beforeAction($action); 
    } 

    public function actionErro() 
    { 
     return $this->render('erro'); 
    }  

} 

Ich brauche die css/site.css und fügen Sie entfernen ein neuer an Ort und Stelle, mit einem anderen Namen, wie im obigen Code!

Vielen Dank!

Antwort

0

Der einfachste Weg besteht darin, ein eigenes Asset mit allen alten AppAsset-Abhängigkeiten zu erstellen, aber die benutzerdefinierte CSS zu verwenden und sie anstelle von AppAsset zu registrieren.

+0

Wie würde ich einen AppSet in-Controller registrieren? Ich versuchte es so: '$ cs = Yii :: app() -> clientScript; $ cs-> registerCssFile ('/ css/layout_01.css'); ' Aber es hat nicht für mich funktioniert – Maicon

+0

Sie registrieren Asset in der Ansicht, vorzugsweise im Layout. – Bizley

0

können Sie umschreiben nur `

public $css = [ 
    'css/site.css', 
]; 

zu

public $css = [ 
    'css/other.css', 
    'css/other_second.css', 
]; 

(wenn es mehr als eine CSS sind Sie verbinden möchten). Das gleiche gilt für js-Dateien. Und entfernen Sie den beforeAction-Teil.

+0

Ich muss auf der 'beforeAction ($ action)' Methode des Kontrollers registrieren. – Maicon

0

Meine Lösung

public function beforeAction($action) { 
    if(Yii::$app->request->get('site')) { 

     Yii::$app->assetManager->bundles = [ 
      'app\assets\AppAsset' => [ 
       'css' => ['css/layout-01.css'], 
      ], 
     ]; 
    } 

    return parent::beforeAction($action); 
} 
Verwandte Themen