我有一個吉他課程網站,那裏有一個練習桌。最初的開發人員在ExercisePresenter中放置了一些函數來檢索與練習相關的其他數據,比如它的url。Laravel 5.2 - 如何訪問EventServiceProvider中的App Presenter方法?
這裏是ExercisePresenter的功能,對於一個運動返回網址:
public function url()
{
return '/guitar-lesson-ex/' . $this->urlName() . '/' . $this->id;
}
所以,現在我創造上創建的,所以我可以用推通知鍛鍊新人的事件。在EventServiceProvider我有這樣的:
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;
認爲會工作,因爲我看到了運動的看法成功地使用$exercise->url
。但它返回$ url爲空。現在,練習數據庫中沒有url列,所以我在某種視圖中使用$exercise->url;
時,laravel發現ExercisePresenter能夠返回url。
我正在通過PHPStorm進行調試,但是當我到達$url = $exercise->url;
並介入時,我只是通過查找一些方法等各種laravel代碼。我沒有足夠的精力與laravel弄清楚它是什麼在這裏做的不是在視圖中(太糟糕了,我們無法調試視圖...),但每次我嘗試這個$ url返回爲null。
任何想法如何讓這個在我的EventServiceProvider中正常工作?
謝謝!