【问题标题】:Laravel 5.3 Route model binding in Route group with domainLaravel 5.3 路由组中的路由模型绑定与域
【发布时间】:2016-12-30 14:51:02
【问题描述】:
我需要在定义子域的组中设置路由模型绑定。
当我运行这段代码时:
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 的实例,
照明\路由\路由器给定。
我不知道,如何让它工作。
非常感谢大家的回复!
【问题讨论】:
标签:
php
laravel
laravel-5.3
php-7
【解决方案1】:
您应该在RouteServiceProvider 类的boot 方法中定义显式模型绑定:
public function boot(){
parent::boot();
Route::bind('app', function ($value) {
return App\Models\App::where([
'slug' => $value,
])->firstOrFail();
});
}
【解决方案2】:
应该是这样的:
class IndexPageController extends Controller
{
public function index($domain, App\IndexPage $page = null) {
//$domain will send first parameter
}
}
要禁用此参数,您可以在中间件中使用
$request->route()->forgetParameter('domain');