【问题标题】: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');
      

      【讨论】:

        猜你喜欢
        • 2017-01-10
        • 2017-10-07
        • 2020-05-05
        • 2015-07-25
        • 2021-05-24
        • 2016-06-04
        • 2018-12-17
        • 2015-08-28
        • 2017-06-22
        相关资源
        最近更新 更多