2017-08-01 56 views
0

我有一個吉他課程網站,那裏有一個練習桌。最初的開發人員在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中正常工作?

謝謝!

回答