2014-10-28 26 views
5

Jak uzyskać parametry URI w metodach wewnątrz niejawnego kontrolera?Laravel 4 - Parametry URI w kontrolerach niejawnych

Po pierwsze, określenie trasy Base:

Route::controller('users', 'UserController'); 

Następnie

class UserController extends BaseController { 

    public function getIndex() 
    { 
     // 
    } 

    public function postProfile() 
    { 
     // 
    } 

    public function anyLogin() 
    { 
     // 
    } 

} 

Jeśli chcę przekazać parametry aditional w URI, jak http://myapp/users/{param1}/{param2}, w jaki sposób można odczytać param1 i param2 wewnątrz respektować metodę? W tym przykładzie, getIndex()

Odpowiedz

7

Jeśli chcesz mieć URL jak http://myapp/users/{param1}/{param2} trzeba mieć w kontrolerze tak:

Route::get('users/{param1}/{param2}', '[email protected]'); 

i dostępem go:

class UserController extends BaseController { 

    public function getIndex($param1, $param2) 
    { 
     // 
    } 

} 

ale hej , możesz też zrobić coś takiego, trasy będą takie same:

class UserController extends BaseController { 

    public function getIndex() 
    { 
     $param1 = Input::get('param1'); 
     $param2 = Input::get('param2'); 

    } 

} 

ale adres URL byłoby coś takiego: http://myapp/users?param1=value&param2=value

+1

Prawdopodobnie jest to jedyny sposób. Chciałbym również skorzystać z Implicit Controllers również w tym przypadku, ale wydaje się, że nie możemy tego zrobić. Jeśli nikt inny nie dostarczy lepszego rozwiązania, otrzymasz ponts. :) –

+1

hmm, wiele osób twierdzi, że niejawni kontrolerzy są trudni do odczytania i odgadnięcia dla nowych deweloperów twojego projektu (na wypadek gdybyś miał nowy). większość ludzi (w tym mój idolowy sposób jeffrey) sugeruje użycie kontrolera zasobów lub zwykłego sposobu dodawania kontrolerów (np. Route :: post lub Route :: put). ale to preferencje programistów i wszyscy mamy różne preferencje :) – Ceeee

2

Oto sposób tworzenia katalogu jak hierarchii między modelami (zagnieżdżona routingu)

Załóżmy Album zawiera zdjęcia, chcielibyśmy kontrolera album (do pobierania danych album) i kontroler obrazu (do pobierania danych obrazu).

Route::group(array('before' => 'auth', 'prefix' => 'album/{album_id}'), function() 
{ 
    // urls can look like /album/145/image/* where * is implicit in image controller. 
    Route::controller('image', 'ImageController'); 

}); 

Route::group(array('before' => 'auth'), function() 
{ 
    // urls can look like /album/* where * is implicit in album controller. 
    Route::controller('album', 'AlbumController'); 

});