2013-05-11 18 views

Odpowiedz

37

skończyło się używając nazw i katalogów pod app/kontrolerów:

/app 
    /controllers 
    /Api 
     /v1 
     /UserController.php 
     /v2 
     /UserController.php 

I w plikach UserController.php ustawić nazw odpowiednio:

namespace Api\v1; 

lub

namespace Api\v2; 

Potem na moich trasach zrobiłem coś takiego:

Route::group(['prefix' => 'api/v1'], function() { 
    Route::get('user',  'Api\v1\[email protected]'); 
    Route::get('user/{id}', 'Api\v1\[email protected]'); 
}); 

Route::group(['prefix' => 'api/v2'], function() { 
    Route::get('user',  'Api\v2\[email protected]'); 
    Route::get('user/{id}', 'Api\v2\[email protected]'); 
}); 

Nie jestem pewien, że to najlepsze rozwiązanie. Jednak pozwoliło to na wersjonowanie kontrolerów w taki sposób, aby nie zakłócały one wzajemnie. Prawdopodobnie mógłbyś zrobić coś weryfikując podobne modele, jeśli to konieczne.

+0

Kiedy używałem tej metody, musiałem odwoływać się do każdej klasy spoza obszaru nazw przy użyciu pełnej ścieżki (przykład: \ Input, \ App) –

+3

Możesz również dodać instrukcję 'use App;'. Tak działają przestrzenie nazw. –

+1

@ iah.vector - mają problem z wersją, tylko musi kontroler idzie do v1 lub modelu, zadania, żądania i ... także musi iść do folderu vesrion? –