2016-11-22 2 views
0

AppAsset est livré avec yii2 de baseComment remplacer le code CSS par défaut sur yii2 dans le contrôleur

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', 
    ]; 
} 

Mon contrôleur principal

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'); 
    }  

} 

Je dois enlever le css/site.css et ajouter un nouveau en place, avec un autre nom, comme dans le code ci-dessus!

Merci!

Répondre

0

Le moyen le plus simple est de créer votre propre Asset ayant toutes les anciennes dépendances AppAsset mais en utilisant le CSS personnalisé et l'enregistrer au lieu de AppAsset.

+0

Comment pourrais-je enregistrer un AppSet dans le contrôleur? J'ai essayé comme ceci: '$ cs = Yii :: app() -> clientScript; $ cs-> registerCssFile ('/ css/layout_01.css'); ' Mais cela n'a pas fonctionné pour moi – Maicon

+0

Vous enregistrez l'actif dans la vue, de préférence dans la présentation. – Bizley

0

Vous pouvez simplement réécrire `

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

à

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

(s'il y a plus d'un css vous voulez vous connecter). Idem pour les fichiers js. Et supprimez la partie beforeAction.

+0

Je dois m'inscrire sur la méthode 'beforeAction ($ action)' du contrôleur. – Maicon

0

Ma solution

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); 
}