2017-08-01 4 views
0

私は演習用のテーブルがあるギターレッスンサイトを持っています。オリジナルの開発者は、ExercisePresenterにいくつかの機能を配置して、URLなどのエクササイズに関連する他のビットのデータを取得しました。Laravel 5.2 - EventServiceProviderのApp Presenterメソッドにアクセスする方法

public function url() 
{ 
    return '/guitar-lesson-ex/' . $this->urlName() . '/' . $this->id; 
} 

は、だから今、私はプッシャー通知を使用できるように作成された新しいエクササイズでイベントを作成しています:ここで

は、運動のためのURLを返しますExercisePresenter内の関数です。私は運動ビューで正常に使用$exercise->urlを参照してくださいので、

public function boot(DispatcherContract $events) 
{ 
    parent::boot($events); 

    Exercise::created(function ($exercise) { 
     // need to update lesson difficulty 
     $lesid = $exercise->lesson_id; 
     $les = \App\Lesson::find($lesid); 
     $dif = $les->difficulty(); 
     DB::table('lessons') 
      ->where('id', $lesid) 
      ->update(['difficulty' => $dif]); 

     // lets trigger NewExerciseEvent to send pusher notifications 
     $url = $exercise->url; 
     event(new NewExerciseEvent($message)); 
    }); 
} 

は、私は上記のコード$url = $exercise->url;に思っ働くだろう:EventServiceProviderで、私は、これは持っています。しかし$ urlをnullに戻しています。さて、エクササイズデータベースにはURL列がありませんので、$exercise->url;がビューで使用されているときに何とかなります。laravelは、ExercisePresenterがURLを返すことができるかどうかを調べています。

私はPHPStormでデバッグしていますが、$url = $exercise->url;に入ってステップインすると、方法を探すさまざまなビットのlaravelコードなどを取ります。laravelで十分理解できませんここでビューとは違ってやっています(ビューをデバッグできないのは悪い...)。しかし、私はこの$ URLを試すたびにnullとして返されます。

EventServiceProviderでこれを正しく動作させるにはどうすればよいですか?

ありがとうございます!

答えて

0

はそれを考え出した:

$url = $exercise->present()->url; 

を私がプレゼンターを使用する方法を探していたが、ちょうど読んだ(Laravel View Presenters From Scratch)、すべてが明確です!

すみません。

関連する問題