Heim > PHP-Framework > YII > Hauptteil

So passen Sie Yii-Komponenten an

爱喝马黛茶的安东尼
Freigeben: 2019-12-07 17:56:28
Original
2403 Leute haben es durchsucht

So passen Sie Yii-Komponenten an

Das Folgende ist ein Beispiel für die Erstellung einer benutzerdefinierten Komponente in Yii2.0

Schritt 1: Unter Gemeinsamer Komponentenordner erstellen.

Schritt 2: Erstellen Sie eine benutzerdefinierte Komponente im neu erstellten Komponentenordner, z. B.: ReadHttpHeader.php. Der Code lautet wie folgt:

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;
                    }
                }
            }
        }
    }
 
}
Nach dem Login kopieren

Hinweis: „common“ ist bereits gemeinsam/ config/ Bootstrap.php verfügt über definierte Aliase und kann direkt verwendet werden.
Schritt 3: Öffnen Sie common/config/main.php (main-local.php) und fügen Sie Ihre Komponenten in die Konfigurationsdatei ein.

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

Schritt 4: Jetzt kann unsere Komponentenmethode von allen Controllern aufgerufen werden. Beispielsweise laden wir jetzt unsere Komponente ReadHttpHeader in unseren Basiscontroller und andere Controller erben sie .

<?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;
        }
    }
 
}
Nach dem Login kopieren

Das Obige ist eine benutzerdefinierte Komponente zum Erhalten der echten IP. Nehmen Sie dies als Beispiel, um den Prozess benutzerdefinierter Komponenten zu veranschaulichen.

PHP-Website für Chinesisch, es gibt viele kostenlose Yii-Einführungs-Tutorials, jeder ist willkommen, es zu lernen!

Das obige ist der detaillierte Inhalt vonSo passen Sie Yii-Komponenten an. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage