Existe-t-il un moyen de forcer Yii à recharger les ressources du module à chaque requête?
Mon site est divisé en différents modules. Chaque module possède ses propres fichiers css ou js dans /protected/modules/my_module/assets/css
ou js
pour les fichiers js. Yiis actifs manager crée un dossier quand j'ai d'abord utiliser la page qui utilise mon actif.
Malheureusement, si je change qqch dans mes fichiers - Yii ne recharge pas mon css ou js. J'ai supprimer manuellement /projects/assets
dossier. C'est vraiment gênant quand vous le développement de l'application.
Est-il un moyen de forcer Yii pour recharger les actifs de chaque requête?
source d'informationauteur Joe
Vous devez vous connecter pour publier un commentaire.
Dans
components/Controller.php
ajoutez le code suivant (ou de modifier un existantbeforeAction
):Ce que cela prend-il avant que l'une des actions sont lancées, l'application va vérifier pour voir si vous êtes en mode debug, et si oui, sera de définir le gestionnaire d'actifs à force de le recopier tous les actifs à chaque chargement de page.
Voir: http://www.yiiframework.com/doc/api/1.1/CAssetManager#forceCopy-detail
Je n'ai pas testé, mais d'après la documentation, je crois qu'il devrait fonctionner correctement.
Remarque: L'emplacement de ce code dans les
beforeAction
est juste un exemple de plus où le mettre. Vous avez simplement besoin de définir laforceCopy
true à la propriété avant tout appel àpublish()
et de le placer dansbeforeAction
devrait lui permettre d'atteindre cet objectif.Si vous utilisez Yii2 il y a une solution beaucoup plus simple grâce à la configuration.
Ajouter les éléments suivants à votre
'config/web.php'
:Cela force le D'assetmanager pour copier tous les dossiers sur chaque course.
Une sinon la solution est de publier votre module actifs comme ceci:
Le quatrième paramètre applique une copie de vos biens, même si elles ont déjà été publiées.
Voir le manuel sur publier() pour plus de détails.
Re-publication de l'actif sur chaque demande potentiellement prend beaucoup de ressources et est unnessecary pour le développement.
Pour le développement, il est beaucoup plus facile d'utiliser le
linkAssets
fonction deCClientScript. Les actifs sont publiés en tant que lien symbolique répertoires, et
ne jamais être régénéré. Voir:
http://www.yiiframework.com/doc/api/1.1/CAssetManager#linkAssets-detail
Pour la mise en scène/production, vous devriez faire la compensation des actifs/dossier
une partie de votre routine de mise à jour/script.
Seulement revenir à l'une des autres solutions si pour quelque raison vous ne pouvez pas utiliser des liens symboliques sur votre machine de développement (très peu probable).
Dans YII 1 dans la configuration que nous avons: