2015-05-23 6 views
5

Używam Laravel 5 i pracuję nad moim lokalnym. zrobiłem trasę z parametrem {ID} i inną trasą o określonej nazwie tak:Jak mogę inaczej zdefiniować trasę, jeśli parametr nie jest liczbą całkowitą?

Route::get('contacts/{id}', '[email protected]_contact'); 
Route::get('contacts/new', '[email protected]_contact'); 

Moim problemem jest to, że gdy próbuję iść na localhost/kontaktów/nowy zostanie on automatycznie dostęp do metoda get_contact. Rozumiem, że zrobiłem parametr {id}, ale co jeśli chcę wywołać get_contact tylko wtedy, gdy mój parametr jest liczbą całkowitą? Jeśli nie, sprawdź, czy jest "nowy" i dostęp do metody new_contact. Następnie, jeśli nie jest liczbą całkowitą, a nie "nową", strona błędu 404.

Jak mogę to zrobić w Laravel 5?

Dzięki za pomoc!

Odpowiedz

10

Wystarczy dodać ->where('id', '[0-9]+') na trasie, gdzie chcesz, aby zaakceptować numer tylko parametr:

Route::get('contacts/{id}', '[email protected]_contact')->where('id', '[0-9]+'); 
Route::get('contacts/new', '[email protected]_contact'); 

czytaj więcej: http://laravel.com/docs/master/routing#route-parameters

+0

Świetny !!! Prawdopodobnie skoczyłem w ich dokumentacji. Wielkie dzięki! Przyjmuję twoją odpowiedź za 10 minut :) –

+0

Nie ma za co :) –

0

Istnieje również możliwość, aby po prostu przełączyć te okolice, ponieważ plik trasa pójdzie przez wszystkie linie od góry do dołu, aż znajdzie prawidłową trasę.

Route::get('contacts/new', '[email protected]_contact'); 
Route::get('contacts/{id}', '[email protected]_contact'); 

Jeśli chcesz ograniczyć tę trasę do liczb czystych, zaznaczone rozwiązanie jest poprawne.

Po prostu dodaję go tutaj, wiem, że jest dość stary;)

Powiązane problemy