2017-08-01 29 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中正常工作?

谢谢!

回答