子域的路由名称

时间:2017-06-09 09:46:27

标签: php laravel routing laravel-5.4 wildcard-subdomain

我的web.php看起来像

Route::group(
    [
        'domain'     => '{tenant}.' . config('app.url'),
    ],
    function () {
        $this->get('/', 'HomeController@index')->name('home');
    }
);

我的HomeController看起来像

/**
 * Show the application dashboard.
 *
 * @param $tenant
 * @return \Illuminate\Http\Response
 */
public function index($tenant)
{
    return view('home', compact('tenant'));
}

app.blade.php文件中看起来像

<a href="{{ route('home', ['tenant', $tenant]) }}">home</a>

使用子域路由我们每次使用{tenant}时都会传递通配符route()值,否则会弹出此错误

(3/3) ErrorException
Missing required parameters for [Route: home] [URI: home].

这在controller以及blade文件中都是冗余的。是否有任何解决方案可以默认绑定{wildcard}

1 个答案:

答案 0 :(得分:1)

创建一个使用现有route()函数的新函数。

示例:

function mdroute ($routeName, $routeData = [])
{
    $tenant = request()->tenant;

    $routeData['tenant'] => $tenant;

    return route($routeName, $routeData);
}
相关问题