Maison > cadre php > YII > Comment lier des événements dans yii2.0

Comment lier des événements dans yii2.0

王林
Libérer: 2020-02-17 14:20:42
original
2386 Les gens l'ont consulté

Comment lier des événements dans yii2.0

Dans yii2, la liaison d'événement est effectuée via la méthode on de yiibaseComponent. Lorsque nous définissons l'événement, nous devons lui lier une fonction de rappel.

Regardez l'exemple. Écrivez d'abord un contrôleur, utilisez on pour lier l'événement, puis utilisez triggle dans la méthode pour appeler

namespace backend\controllers;

use yii\web\Controller;

class EventController extends Controller
{
   const TEST_EVENT = 'event';

    public function init()
    {
        parent::init();
        $this->on(self::TEST_EVENT,function(){echo '这个一个事件测试。。。';});
    }


    public function actionIndex()
    {
        $this->trigger(self::TEST_EVENT);
    }
}
Copier après la connexion

pour accéder à la méthode d'index et obtenir le résultat du événement. Lors de la saisie du contrôleur, une heure est liée à 'event'. Le premier paramètre de on représente le nom de l'événement (doit être une constante), et le deuxième paramètre est la fonction de rappel de cet événement.

(Tutoriel recommandé : yii framework )

peut également s'écrire de la manière suivante :

namespace backend\controllers;

use yii\web\Controller;

class EventController extends Controller
{
   const TEST_EVENT = 'event';

    public function init()
    {
        parent::init();
        $this->on(self::TEST_EVENT,[$this,'onTest']);
    }


    public function onTest()
    {
        echo '这个一个事件测试。。。';
    }

    public function actionIndex()
    {
        $this->trigger(self::TEST_EVENT);
    }
}
Copier après la connexion

$this représente cet objet, 'onTest' Fait référence à la méthode d'exécution. Une fois l'événement lié, il est toujours inutile s'il n'est pas appelé. À ce stade, la méthode triggle de la classe yiibaseComponent est utilisée pour l'appeler.

Application étendue des événements (méthode de transmission de paramètres)

Définissez d'abord un contrôleur, puis définissez-le et appelez-le. Si vous souhaitez transmettre différents paramètres, vous devez utiliser yiibaseEvent. la classe est utilisée

class EventController extends Controller
{
    const TEST_USER = 'email'; //发送邮件
    public function init()
    {
        parent::init();
        $msg = new Msg();
        $this->on(self::TEST_USER,[$msg,'Ontest'],'参数Test');  
    }
    public function actionTest()
    {
        $msgEvent = new MsgEvent();
        $msgEvent->dateTime = 'Test时间';
        $msgEvent->author = 'Test作者';
        $msgEvent->content = 'Test内容';
        $this->trigger(self::TEST_USER,$msgEvent);
    }
}
Copier après la connexion
class MsgEvent extends Event
{
    public $dateTime;   // 时间
    public $author;     // 作者
    public $content;    // 内容

}
Copier après la connexion

msg contient la méthode d'appel

class Msg extends ActiveRecord
{
    public function onTest($event) //$event是yii\base\Event的对象
    {
        print_r($event->author);//输出'Test作者'
        print_r($event->dateTime);//输出'Test时间'
        print_r($event->content);//输出'Test内容'
        print_r($event->data);//输出'参数Test'

    }
}
Copier après la connexion

Pour plus de contenu lié à la programmation, veuillez visiter la colonne Tutoriel de programmation du site Web PHP chinois !

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal