Maison  >  Article  >  cadre php  >  Comment personnaliser les composants yii

Comment personnaliser les composants yii

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-12-07 17:56:282388parcourir

Comment personnaliser les composants yii

Ce qui suit est un exemple de la façon de créer un composant personnalisé dans Yii2.0

Étape 1 : Sous dossier commun Créer des composants.

Étape 2 : Créez un composant personnalisé dans le dossier des composants nouvellement créé, tel que : ReadHttpHeader.php, le code est le suivant :

namespace common\components;
 
use Yii;
use yii\base\Component;
 
class ReadHttpHeader extends Component {
 
    public  function RealIP()
    {
        $ip = false;
 
        $seq = array('HTTP_CLIENT_IP',
                  'HTTP_X_FORWARDED_FOR'
                  , 'HTTP_X_FORWARDED'
                  , 'HTTP_X_CLUSTER_CLIENT_IP'
                  , 'HTTP_FORWARDED_FOR'
                  , 'HTTP_FORWARDED'
                  , 'REMOTE_ADDR');
 
        foreach ($seq as $key) {
            if (array_key_exists($key, $_SERVER) === true) {
                foreach (explode(',', $_SERVER[$key]) as $ip) {
                    if (filter_var($ip, FILTER_VALIDATE_IP) !== false) {
                        return $ip;
                    }
                }
            }
        }
    }
 
}

Remarque : 'common' est déjà en common/ config/ Bootstrap.php a défini des alias et peut être utilisé directement.
Étape 3 : Ouvrez common/config/main.php (main-local.php) et ajoutez vos composants dans le fichier de configuration.

<?php
 
return [
    &#39;components&#39; => [
        &#39;ReadHttpHeader&#39; => [
            &#39;class&#39; => &#39;common\components\ReadHttpHeader&#39;
        ],
    ],
];

Étape 4 : Maintenant, notre méthode de composant peut être appelée par tous les contrôleurs. Par exemple, nous chargeons maintenant notre composant ReadHttpHeader dans notre contrôleur de base (BaseController), et d'autres contrôleurs en héritent. .

<?php
 
namespace frontend\controllers;
 
use Yii;
use yii\web\Controller; 
class BaseController extends Controller {
 
    protected $session = false;
 
    public function actions() {
        return [
                  &#39;error&#39; => [
                            &#39;class&#39; => &#39;yii\web\ErrorAction&#39;,
                  ],
        ];
    }
 
    public function init() {
 
        parent::init();
 
        // IP essential for prelim DDoS check
        if (!$this->cgS(&#39;UC-SEC.1a&#39;)) {
            $ip = Yii::$app->ReadHttpHeader->RealIP();
            echo $ip;
        }
    }
 
}

Ce qui précède est un composant personnalisé pour obtenir la véritable adresse IP. Prenez ceci comme exemple pour illustrer le processus des composants personnalisés.

Le site Web PHP chinois propose un grand nombre de Tutoriels d'introduction Yii gratuits, tout le monde est invité à apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Articles Liés

Voir plus