首页 > 解决方案 > 如何在路由之前获取一些数据并将其发送到 laravel 中的路由?

问题描述

我在数据库中有不同的域和不同的路由,我想将每个域发送到特定的路由。我怎样才能做到这一点?在哪个文件中,我可以从路由之前发生的数据库中获取数据,以决定调用哪个控制器和方法。我可以像这样在 web.php 中有一个变量($domains)吗:

foreach ($domains as $domain) {
    Route::group(array('domain' => $domain['domain']), function() use ($domain) {
        Route::get('/', '' . $domain['controller'] . '@' . $domain['method']);
    });
}

标签: laravelroutes

解决方案


您应该为此使用服务提供者(引导)。转到/app/Providers/AppServiceProvider.php并发送以下代码:

<?php

namespace App\Providers;

use App\MyDomainsModel;
use Illuminate\Support\Facades\Route;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        // get all domains
        $Domains = MyDomainsModel::all();

        // register the routes
        foreach($Domains as $Domain)
            Route::group(['domain' => $Domain['domain']] , function()use($Domain) {
                Route::get('/', $Domain['controller'].'@'.$Domain['method']);
            });    
    }
}

推荐阅读