15

Laravel のイベント リスナーとハンドラをどこに配置するか迷っています。どこにでも置けるって誰かが言ってた。これは私がこれまでに試したことです。

# listeners/log.php
<?php
Event::listen('log.create', 'LogHandler@create');

# handlers/LogHandler.php
<?php
class LogHandler {
        public function create(){
           $character = new Character;
           $character->name = "test";
           $character->save();
    }
}

# controllers/MainController.php
    public function test(){
        Event::fire('log.create');
        return "fired";
     }

# start/global.php
ClassLoader::addDirectories(array(
    app_path().'/commands',
    app_path().'/controllers',
    app_path().'/models',
    app_path().'/database/seeds',
    app_path().'/libraries',
    app_path().'/listeners',
    app_path().'/handlers',
));
4

2 に答える 2

22

あなたがこれを尋ねているのは、機能していることを確認するためではなく、機能していないからだと思います。

イベントリスナーをどこにでも置くことができるのは正しいことですが、それらが実際に含まれていることを確認する必要があります.Laravelはソースコードを検索してそれらを探しません.

そのようなファイルを含めるのに私のお気に入りの場所はstart/global.php. ファイルの下部を見ると、フィルターが含まれている場所を確認できます。同じことを行って、リスナーを含めることができます。すべてのルートが1つのルートファイルにあるように、それらをすべて1つのリスナーファイルに保持するのが最もクリーンです...

# start/global.php
require app_path().'/filters.php';
于 2013-04-10T22:56:28.710 に答える