13

サブドメインがユーザーを指すアプリケーションを構築しています。ルート以外の場所でアドレスのサブドメイン部分を取得するにはどうすればよいですか?

Route::group(array('domain' => '{subdomain}.project.dev'), function() {

    Route::get('foo', function($subdomain) {
        // Here I can access $subdomain
    });

    // How can I get $subdomain here?

});

ただし、面倒な回避策を作成しました。

Route::bind('subdomain', function($subdomain) {

    // Use IoC to store the variable for use anywhere
    App::bindIf('subdomain', function($app) use($subdomain) {
        return $subdomain;
    });

    // We are technically replacing the subdomain-variable
    // However, we don't need to change it
    return $subdomain;

});

ルートの外で変数を使用したい理由は、その変数に基づいてデータベース接続を確立するためです。

4

5 に答える 5

14

この質問が出された直後に、Laravel はルーティング コード内にサブドメインを取得するための新しい方法を実装しました。次のように使用できます。

Route::group(array('domain' => '{subdomain}.project.dev'), function() {

    Route::get('foo', function($subdomain) {
        // Here I can access $subdomain
    });

    $subdomain = Route::input('subdomain');

});

ドキュメントの「ルート パラメータ値へのアクセス」を参照してください。

于 2014-11-25T18:59:22.433 に答える
2

マクロの方法:

Request::macro('subdomain', function () {
    return current(explode('.', $this->getHost()));
});

これで使用できます:

$request->subdomain();
于 2020-04-21T13:46:06.037 に答える