【问题标题】:Sub-domain's Route Name子域的路由名称
【发布时间】:2017-11-11 06:44:24
【问题描述】:

我的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>

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

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

这在controllerblade 文件中都是多余的。有没有办法默认绑定{wildcard}

【问题讨论】:

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


    【解决方案1】:

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

    例子:

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

    【讨论】:

    • 我应该在哪里定义这个?
    • 将此函数添加到您使用composer加载的文件中。作曲家中的示例:`"autoload": { "files": [ "path/to/file" ] }.
    • 你的意思是像辅助函数一样使用这个方法吗?
    • 正确。快速搜索如何做到这一点:Laravel Recipes
    • 谢谢它的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多