1

3 つのサイト (アドオン ドメイン) を実行したい Laravel のインストールが 1 つあります。各ドメインを取得するために Laravel のルート グループ化メソッドを使用しています。ただし、各グループ内でどのドメインを使用しているかを知る必要があります。これを行う最善の方法は何ですか?次のコードがあります。

Route::group(array('domain' => 'domainone.com'), function($domain = 'domainone')
{
    Route::get('/', function($domain) {
         //
    });
});

^ これは機能しません。

注記では、URL でワイルドカードを使用することを提案しています。

Route::group(array('domain' => '{domain}.com'), function()
{
    Route::get('/', function($domain) {
         //
    });
});

ただし、ローカルサーバーでの開発中にこれを実際に使用できないため、別の方法をお勧めします。各ドメインのキーを手動で宣言できる最初の方法に似た方法はありますか?

編集: また、そのドメイン変数をコントローラーに渡す必要がありますが、その方法を理解するのにも苦労していますか?

ありがとう。


編集2

私の問題は、サブドメインを使用しておらず、ドメインを使用していることです。Laravel の同じインストールで実行されている 3 つの姉妹サイトに 3 つの個別のドメインがあります。したがって、ドメインごとに 1 つずつ、合計 3 つのルート グループがあります。さらに、毎回使用してドメイン変数を要求したくありません。それぞれの場合に Laravel にドメインを伝え、そのドメインを変数として各グループ内の適切なコントローラーに渡します。これが私のコード例です:{domain}.com

$domain1 = 'domain1.com';
$domain2 = 'domain2.com';
$domain3 = 'domain3.com';

Route::group(array('domain' => $domain1), function(){
    Route::get('/', 'PrimaryController@somefunction1');  // <-- I want to access $domain1 in my controller
});
Route::group(array('domain' => $domain2), function(){
    Route::get('/', 'PrimaryController@somefunction2');  // <-- ...and $domain2
});
Route::group(array('domain' => $domain3), function(){
    Route::get('/', 'PrimaryController@somefunction3');  // <-- ...and $domain3
});
4

2 に答える 2

2

これは、最初の方法のオプションです。

$domain = 'domainone';
Route::group(array('domain' => $domain.'.com'), function() use ($domain)
{
    Route::get('/', function() use ($domain) {
         echo "$domain";
    });
});

グループを介して、コントローラーに好きなように水を渡すことができます。もう 1 つのレベルを追加するだけです。

$subdomain = 'atlanta';
$domain = 'domainone';

Route::group(array('domain' => "$subdomain.$domain.com"), function()
{
    Route::group(array('domain' => '{subdomain}.{domain}.com'), function()
    {
        Route::get('testdomain', function($subdomain, $domain) {
            dd("closure: subdomain: $subdomain - domain: $domain");
        });

        Route::get('testdomaincontroller', 'FooController@index');
    });
});

これを行うことで、コントローラ アクションに渡される最初の 2 つの変数が常に $subdomain と $subdomain になることを理解する必要があります。これを表示するコントローラーを次に示します。これを使用して、これらのルートもテストできます。

class FooController extends Controller {

    public function index($subdomain, $domain)
    {
        dd("controller: subdomain: $subdomain - domain: $domain");
    }
}

これにより、2 つの異なるルートが作成されます。

http://yourdomain.dev/testdomain
http://yourdomain.dev/testdomaincontroller
于 2013-12-18T15:12:30.120 に答える