2

既存の Laravel 4 コントローラーとモデルを取得して、「api.myapp.com」にアクセスしたときに json オブジェクトの応答を返す簡単な方法を探しています。

指定したサブドメイン要求で使用できるルーティング フィルターはありますか?

4

2 に答える 2

2

問題は次の 2 つであることがわかりました。1) サブドメインを正しく解決するために、ローカル ホスト ファイルを更新するのを忘れていました。2) Laravel 4 Route::resource インスタンスは、複数の Route::group() で再利用できません。

異なるサブドメインで同じリソース ルートを参照する唯一の方法は、各 RESTful ルートを手動で指定し、リソースごとに新しいコントローラーを作成することであることがわかりました。Jeffery Way には、これをスピードアップするための優れた崇高なスニペットがあります。ここにスニペット。

コピーされた各コントローラーの前の「Api ..」に注意してください。これは、コントローラーディレクトリで同じ名前が付けられています。

Route::group(array('domain' => 'www.myapp.com'), function()
{
    Route::resource('projects', 'ProjectsController');
});

Route::group(array('domain' => 'api.myapp.com'), function()
{

/ Resource API
// project API Resource
    Route::get('projects', array('as' => 'projects', 'uses' => 'ApiProjectsController@index'));
    Route::get('projects/{id}', array('as' => 'project', 'uses' => 'ApiProjectsController@show'));
    Route::get('projects/new', array('as' => 'new_project', 'uses' => 'ApiProjectsController@new'));
    Route::get('projects/{id}/edit', array('as' => 'edit_project', 'uses' => 'ApiProjectsController@edit'));
    Route::post('projects', 'ApiProjectsController@create');
    Route::put('projects/{id}', 'ApiProjectsController@update');
    Route::delete('projects/{id}', 'ApiProjectsController@destroy');
});

次のステップは、ApiProjectController RESTful メソッドで適切な応答を呼び出すことです。

于 2013-03-08T02:21:50.210 に答える
1

before フィルターを使用して、「api」サブドメインを確認してください。このようなもの

Route::filter('before', function()
{
    $server = explode('.', Request::server('HTTP_HOST'));
    if ($server[0] === 'api')
    {
         // Api subdomain request - do JSON
    }
    else
    {
         // Route normal
    }
}
于 2013-03-06T11:23:22.273 に答える