我有一个吉他课程网站,那里有一个练习桌。最初的开发人员在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中正常工作?
谢谢!