Comment écrire des fonctions globales dans Yii2 et d'y accéder à tout point de vue (pas la coutume façon)
Yii1.1 avait un CComponent classe qui avait un CBaseController qui est la classe de base pour en Hérite. Il y avait un /protected/components/Controller.php la classe qui a permis à toute fonction dans cette classe, pour être accessible en tout point de vue.
Yii2 ne possède plus les CComponent classe. Le Yii2 guide indique que "Yii 2.0 rompt le CComponent classe 1.1 en deux classes: yii\base\Objet et yii\base\Component". Personne ne sait comment écrire des fonctions globales dans Yii2 et dans n'importe quelle vue, tout comme il l'a été dans Yii1.1 à l'aide de /protected/components/Controller.php?
Un couple de sujets similaires discuter des réponses personnalisées, mais je voudrais savoir si il existe un moyen officiel de le faire, pas la façon personnalisée.
- Vous devez utiliser un composant pour des fonctions globales. Le lien que vous avez mentionné contient un exemple simple sur la façon de le faire.
Vous devez vous connecter pour publier un commentaire.
Suivre Étape:
1) créer un répertoire suivant "backend/composants"
2) créer "BackendController.php" contrôleur dans le dossier "components"
3) le tout soutenu contrôleur s'étendre à "BackendController" (comme).
4) créez votre action afficher la page "index.php" (like)
$this->context->Hello()
au lieu de$this->Hello()
Contrôleur de fonctions ne sont pas accessibles dans les points de vue.
Dans Yii1 la vue rattaché au contrôleur alors que dans Yii2 la vue s'attache à la
View
classe (ce fut l'un des principaux changements dans Yii2). C'est ce qui sépare le contrôleur et la vue de la logique, mais rend également plus difficile pour les fonctions globales, comme vous l'avez remarqué.Yii2, lui-même, a aussi besoin des fonctions globales. Ils ont fait de "helpers", il y a en fait un certain nombre d'aides: https://github.com/yiisoft/yii2/tree/master/framework/helpers offrant chacun leur propre ensemble de fonctions globales pour les utiliser.
Si vous n'avez pas encore deviné, c'est la meilleure façon de le faire globales dans Yii2. Il est également conforme à la norme, aussi bien de façon (PSR-2 ou autre) et est considéré comme meilleur codage que la normale globals.
Donc, en fait, vous devez faire votre propre des aides personnalisées avec votre globales dans, par exemple:
et juste référence que de votre point de vue/contrôleur comme vous le feriez tout helper:
<?php namespace common\components; class MyHelpers { public static function myGlobalToDoSomethingAwesome() { return $awesomeness; } }
Une option consiste à créer un fichier (probablement dans vos composants répertoire) qui a des fonctions en elle:
et de l'inclure dans votre
index.php
fichier:L'inconvénient est que c'est maintenant à l'extérieur de la programmation orientée objet, champ d'application. J'ai utilisé cette méthode pour créer un
dd()
(vidage et mourir) fonction comme Laravel a.Que, la question est déjà une réponse. Mais, là encore, je tiens à répondre pour des utilisations futures.
Je suis en utilisant yii2-app-base. [NOTE : structure de Répertoire peuvent être différents pour yii2-app-avancé.]
Ma Structure De Répertoire:
CommonController.php [contrôleur Commun(voir dans la structure de répertoire), qui sera étendu à tous les contrôleur, si nécessaire.]
UsersController.php
Donc, Chaque fois que cela UsersController.php contrôleur viendra dans un compte, d'abord
init()
méthode sera appelée, Et dansinit()
méthode CommonController méthodecheckLoginAccess()
obtiendrez automatiquement aux appels. Ainsi, lorsqu'un membre ayant pas de login d'accès, il/elle sera automatiquement déconnecté.Espère que ça va aider. Tout Problème/Question, n'hésitez pas à demander.
Vous pouvez également faire des composants dans YII2
Créer un répertoire et un fichier de même que dans YII1 en frontend ou backend et écrire ci-dessous le code
frontend/components/Controller.php
Après que l'utiliser dans chaque contrôleur par l'élargissement de cette classe, ce
Vous pouvez facilement créer un composant:
L'enregistrer comme une composante de votre
frontend/config/main.php
fichier:et enfin l'utiliser où vous en avez besoin:
Je n'ai pas commencé Yii2 mais vous devriez être capable d'atteindre des fonctionnalités similaires à l'aide de fonctions statiques.
Créer une classe, disons "MyGlobalFunctions.php" avec le contenu suivant
dans vos vues, vous pouvez appeler cette fonction en tant que
Je suis nouveau sur Yii et j'ai essayé cette solution pour exemple, les messages qui sont affichés dans la mise en page
j'ai créé un baseController en frontend/composants (tous les contrôleurs étend cette BaseController)
et ne le toujours besoin de choses dans le init section.
et configurer les données à la vue/mise en page avec $this->view->params
dans la vue ou de mise en page utiliser les données avec $this->params
je ne sais pas si c'est la meilleure pratique ..
désolé pour mon mauvais anglais, j'espère que cela aide