2016-09-20 9 views
1

からの変数は、私は次のように私のコードは、ユーザーが特定のページにアクセスし、特に場合は、イベントを処理するためにlaravelを使用していなさい:新しいイベントLaravel

これは私のPageControllerである:最後

public function showTestPage() 
    { 
     //This "redirect to" method is so i don't have to rewrite the event 
      for every method that returns a new view; 
     $this->redirectTo('test'); 
    } 

    public function redirectTo($page) 
    { 
     //This is the data i want to access from my UserAccessedPage Listener 
     event(new UserAccessedPage($page)); 
     return view($page); 
    } 

ここで私のUserAccessedPageリスナーです:

クラスLogUserAccessedPage {

/** 
* Create the event listener. 
* 
* @return void 
*/ 
public function __construct() 
{ 

} 

/** 
* Handle the event. 
* 
* @param UserAccessedPage $event 
* @return void 
*/ 
public function handle(UserAccessedPage $event) 
{ 

    Log::create([ 
     'info' => "User ". ucfirst(Auth::user()->name) . " Accessed Page " . Carbon::now()->format('H:i:s'), 
     'user' => ucfirst(Auth::user()->name), 
     'object_affected' => Auth::user()->id, 
     'ip_address' => '', 
     'time' => Carbon::now()->format('H:i:s'), 
     'date' => Carbon::now()->format('Y-m-d') 
    ]); 
} 

}

私はそれを私のリスナーに与えて、Log :: create(['info' => $ page])に入れることができますか?セッターとゲッターを使用してみてください

protected $listen = [ 
    'App\Events\UserLoggedIn' => [ 
     'App\Listeners\LogUserLoggedIn', 
    ], 
    'App\Events\UserLoggedOut' => [ 
     'App\Listeners\LogUserLoggedOut', 
    ], 
    'App\Events\UserAccessedPage' => [ 
     'App\Listeners\LogUserAccessedPage', 
    ], 
]; 
+0

「UserAccessedPage」のコードを表示できますか? – user3158900

+0

@ user3158900確か2秒 –

+0

$ listenプロパティのApp \ Providers \ EventServiceProviderマッピングで定義しましたか?イベント=>リスナーですか? – Adiasz

答えて

1

私はとても愚かな-_-

イムそれを考え出しましたコードpublic function handle(UserAccessedPage $event)は、 "UserAccessedPage"クラスが変数 "$ event"を介してアクセスできることを意味していたので、最終的な解決策は単に$event->pageを使用してページ変数をエコーアウトしていました。

ありがとうございます。

1

をいくつかの混乱を解消するために

class UserAccessedPage extends Event 

{ 
    use SerializesModels; 

    public $page; 

    /** 
    * Create a new event instance. 
    * 
    * @return void 
    */ 
    public function __construct($page) 
    { 
     $this->page = $page; 
    } 

    /** 
    * Get the channels the event should be broadcast on. 
    * 
    * @return array 
    */ 
    public function broadcastOn() 
    { 
     return []; 
    } 

マイEventServiceProvider:私はこれが

ように尋ねるイムは私UserAccessedPageのコードを要求されたどのような意味があります願っています。あなたのイベントページで、次の操作を行います。あなたのリスナーに

public $page 

public function __construct($page) 
{ 
    $this->setPage($page); 
} 

public function setPage($page) { 
    $this->page = $page; 
} 

public function getPage() { 
    return $this->page; 
} 

、ページを取得する:私はこの作品を持っていたので

public function handle(UserAccessedPage $event) 
{ 
    $page = $event->getPage(); 

    Log::create([ 
     'info' => "User ". ucfirst(Auth::user()->name) . " Accessed Page " . Carbon::now()->format('H:i:s'), 
     'user' => ucfirst(Auth::user()->name), 
     'object_affected' => Auth::user()->id, 
     'ip_address' => '', 
     'time' => Carbon::now()->format('H:i:s'), 
     'date' => Carbon::now()->format('Y-m-d') 
    ]); 
} 
+0

あなたはこれを私が考え出したように投稿しました:Dところで –

関連する問題