2017-08-12 1 views
1

私はLaravel5でWebアプリケーションを開発しています。コントローラのコードでは、コードを書きました。Laravel5 `RouteServiceProvider`は` Error with compatible`となるはずです

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) 
{ 

を追加しましたが、それは動作しません、と私はエラー怒鳴るを得ました。

のApp \プロバイダの宣言\ RouteServiceProvider ::ブーツ(APP \プロバイダ\ルータ$ルータ) が を照らし\財団\サポート\プロバイダー\ 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はい。どちらも同じことを行う異なる方法です。これは、「laravelのIOCコンテナからインスタンスを解決する」ことです。 –

+0

@hiel 'Route :: model'は** Facade **の方法で、' app( 'router') 'は** Helper **の方法です。 –

0

あなたは次のように試してみてください。代わりに使用App\Providers\Router;use Route;を入れてください。そして、あなたはまた、詳細についてはapp('router')->pattern() ...

を使用することができます

OR

を試してみてください

これに従ってください。 link

あなたのためにこの作品がほしいと思っています!