2017-08-12 70 views
1

我正在開發一個Laravel5的Web應用程序,並且在Controller的代碼中,我寫了一段代碼。Laravel5`RouteServiceProvider``應該與`兼容錯誤

public function show($id) 
{ 
    $post = Post::find($id); 
    \View::share(compact('post')); 
    return view('posts.show'); 
} 

但是,我想寫如下。

public function show(Post $post) 
{ 
    \View::share(compact('post')); 
    return view('posts.show'); 
} 

RouteServiceProvider.php,我加Router $router

public function boot(Router $router) 
{ 

但是,它不工作,我得到了一個錯誤波紋管。宣言 軟件\供應商\ RouteServiceProvider ::啓動程序(App \供應商\ $路由器路由器) 應與 照亮\基金會的\ Support \提供商兼容\ RouteServiceProvider ::啓動()

什麼是問題? 謝謝!

回答

0

boot方法繼承自Illuminate\Foundation\Support\Providers\RouteServiceProvider,它與您的簽名沒有相同的簽名,導致此錯誤。

如果您必須使用boot方法中的路由器,然後使用app()輔助函數來獲取路由器的實例。

public function boot() 
{ 
    $router = app('router'); // Router Instance 

    parent::boot(); 
} 
+0

感謝您的回答! 正如你所說,使用'app('router') - > model('post','App \ Post');',它非常完美! 'Route :: model('post',\ App \ Post :: class);'也是如此。 – hiel

+0

@hiel是的。兩者是做不同的方式做同樣的事情是「從拉拉維爾的國際奧委會容器解決實例」。 –

+0

@hiel'Route :: model'是** Facade **方式,'app('router')'是** Helper **方式。 –

0

你應該嘗試這樣的:

請把use Route;,而不是使用App\Providers\Router;並嘗試

OR

您也可以使用app('router')->pattern() ...

欲瞭解更多詳情,請按照此link

希望爲你工作!!!

相關問題