Laravel 5.3使用域在Route组中路由模型绑定

时间:2016-12-30 14:51:02

标签: php laravel laravel-5.3 php-7

我需要在定义子域的组中设置Route模型绑定。

当我运行此代码时:

Route::bind('app', function ($value) {
    return App\Models\App::where([
      'slug' => $value,
    ])->firstOrFail();
});

Route::group(['domain' => '{appSlug}.upman.dev'], function(App\Models\App $app) {});

我刚收到错误消息:

  

参数1传递给App \ Providers \ RouteServiceProvider :: {closure}()   必须是App \ Models \ App的实例,实例   照亮\路由\路由器给出。

我不知道如何让它发挥作用。

非常感谢各位回复!

2 个答案:

答案 0 :(得分:0)

您应该在boot类的RouteServiceProvider方法中定义显式模型绑定:

public function boot(){

     parent::boot();

     Route::bind('app', function ($value) {
           return App\Models\App::where([
                'slug' => $value,
           ])->firstOrFail();
     });
}

答案 1 :(得分:0)

看起来应该是这样的:

class IndexPageController extends Controller
{
    public function index($domain, App\IndexPage $page = null) {
        //$domain will send first parameter
    }
}

禁用此参数,您可以在中间件中使用

$request->route()->forgetParameter('domain');