기본 경로
애플리케이션 경로의 대부분은 app/routes.php 파일에 정의됩니다. Laravel에서 가장 간단한 경로는 URI와 클로저 호출로 구성됩니다.
기본 GET 경로
<span style="font-size: 16px;">Route::get('/', function()<br/>{<br/>return 'Hello World';<br/>});<br/></span>
기본 POST 경로
<span style="font-size: 16px;">Route::post('foo/bar', function()<br/>{<br/>return 'Hello World';<br/>});<br/></span>
등록 모든 HTTP 메소드에 응답하도록 라우팅
<span style="font-size: 16px;">Route::any('foo', function()<br/>{<br/> return 'Hello World';<br/>});<br/></span>
HTTPS를 통해 경로에 강제로 액세스
<span style="font-size: 16px;">Route::get('foo', array('https', function()<br/>{<br/> return 'Must be over HTTPS';<br/>}));<br/></span>
종종 생성해야 하는 경우가 있음 경로 기반 URL의 경우 URL::to 메소드를 사용하여 이를 수행할 수 있습니다:
<span style="font-size: 16px;">$url = URL::to('foo');<br/></span>
경로 매개변수
<span style="font-size: 16px;">Route::get('user/{id}', function($id)<br/>{<br/>return 'User '.$id;<br/>});<br/></span>
선택적 경로 매개변수
<span style="font-size: 16px;">Route::get('user/{name?}', function($name = null)<br/>{<br/>return $name;<br/>});<br/></span>
기본값이 있는 선택적 경로 매개변수
<span style="font-size: 16px;">Route::get('user/{name?}', function($name = 'John')<br/>{<br/>return $name;<br/>});<br/></span>
정규식 제약 조건이 있는 경로
<span style="font-size: 16px;">Route::get('user/{name}', function($name)<br/>{<br/>//<br/>})<br/>->where('name', '[A-Za-z]+');<br/>Route::get('user/{id}', function($id)<br/>{<br/>//<br/>})<br/>->where('id', '[0-9]+');<br/></span>
경로 필터
경로 필터는 사이트에 대해 생성해야 하는 특정 경로에 대한 액세스를 제한하는 간단한 방법을 제공합니다. 지역. Laravel 프레임워크에는 auth 필터, auth.basic 필터, 게스트 필터 및 csrf 필터와 같은 일부 라우팅 필터가 포함되어 있습니다. app/filters.php 파일에 저장됩니다.
라우팅 필터 정의
Route::filter('old', function() { if (Input::get('age') < 200) { return Redirect::to('home'); } });
라우팅 필터에서 응답이 반환되면 이 응답은 이 요청에 대한 응답으로 간주되며 해당 경로의 라우팅은 실행되지 않습니다. after 필터도 실행 취소됩니다.
Route::get('user', array('before' => 'old', function() { return 'You are over 200 years old!'; }));
경로에 대한 경로 필터 지정
Route::get('user', array('before' => 'auth|old', function() { return 'You are authenticated and over 200 years old!'; }));
경로 필터 매개변수 지정
Route::filter('age', function($route, $request, $value) { // }); Route::get('user', array('before' => 'age:200', function() { return 'Hello World'; }));
경로 필터가 세 번째로 매개변수에 대한 응답을 수신하는 경우 $ 응답:
Route::filter('log', function($route, $request, $response, $value) { // });
기본 경로 필터 패턴
URI를 기반으로 경로 집합에 대한 필터를 지정할 수 있습니다.
Route::filter('admin', function() { // }); Route::when('admin/*', 'admin');
위의 예에서 admin 필터는 admin/으로 시작하는 모든 경로에 적용됩니다. 별표는 와일드카드 문자 역할을 하며 모든 문자 조합과 일치합니다.
HTTP 메소드를 지정하여 패턴 필터를 제한할 수도 있습니다.
Route::when('admin/*', 'admin', array('post'));
필터 클래스
고급 필터의 경우 클로저 함수 대신 클래스를 사용할 수 있습니다. 필터 클래스는 애플리케이션 외부에 있는 IoC 컨테이너이므로 필터에 종속성 주입을 사용하여 테스트하기가 더 쉽습니다.
필터 클래스 정의
class FooFilter { public function filter() { // Filter logic... } }
클래스 기반 필터 등록
Route::filter('foo', 'FooFilter');
이름이 지정된 경로
지정에서 이름이 지정된 경로를 더 쉽게 사용할 수 있습니다. 리디렉션 또는 URL을 생성할 때 경로를 지정합니다. 다음과 같이 경로 이름을 지정할 수 있습니다.
Route::get('user/profile', array('as' => 'profile', function() { // }));
컨트롤러 메서드에 경로 이름을 지정할 수도 있습니다.
Route::get('user/profile', array('as' => 'profile', 'uses' => 'UserController@showProfile'));
이제 URL 또는 점프를 생성할 때 경로 이름:
$url = URL::route('profile'); $redirect = Redirect::route('profile');
currentRouteName 메소드를 사용하여 경로 이름을 가져올 수 있습니다:
$name = Route::currentRouteName();
Route Group
가끔 다음을 원할 수도 있습니다. 일련의 경로에 필터를 적용합니다. 각 경로에 대해 필터를 지정할 필요가 없으며 경로 그룹을 사용할 수 있습니다.
Route::group(array('before' => 'auth'), function() { Route::get('/', function() { // Has Auth Filter }); Route::get('user/profile', function() { // Has Auth Filter }); });
하위 도메인 라우팅
Laravel 라우팅은 와일드카드 하위 도메인을 처리하고 도메인 이름에서 와일드카드를 가져올 수도 있습니다. 매개변수:
하위 도메인 경로 등록
Route::group(array('domain' => '{account}.myapp.com'), function() { Route::get('user/{id}', function($account, $id) { // }); });
경로 접두사
경로 그룹은 속성 배열의 접두사 옵션을 사용하여 경로 그룹에 접두사를 추가할 수 있습니다.
경로 그룹에 접두사 추가
Route::group(array('prefix' => 'admin'), function() { Route::get('user', function() { // }); });
경로 모델 바인딩
모델 바인딩은 모델을 경로에 삽입하는 간단한 방법을 제공합니다. 예를 들어 단순히 사용자 ID를 주입하는 대신 지정된 ID를 기반으로 전체 사용자 모델 인스턴스를 주입할 수 있습니다. 먼저 Route::model 메서드를 사용하여 필요한 모델을 지정합니다.
변수를 모델에 바인딩
Route::model('user', 'User');
그런 다음 {user} 매개변수가 포함된 경로를 정의합니다.
Route::get('profile/{user}', function(User $user) { // });
{user} 매개변수를 User 모델에 바인딩했으므로 User 인스턴스가 경로에 주입됩니다. 예를 들어 profile/1에 대한 요청은 ID 1의 User 인스턴스를 주입합니다.
참고: 이 모델 인스턴스가 데이터베이스에 없으면 404 오류가 발생합니다.
발견되지 않은 자신만의 동작을 지정하려면 클로저를 모델 메소드의 세 번째 인수로 전달할 수 있습니다.
Route::model('user', 'User', function() { throw new NotFoundException; });
때로는 자신만의 메소드를 사용하고 싶을 때도 있습니다. 경로 매개변수를 처리하려면 Route::bind 메서드를 사용할 수 있습니다.
Route::bind('user', function($value, $route) { return User::where('name', $value)->first(); });
404 오류를 트리거합니다.
경로에서 404 오류를 수동으로 트리거하는 방법에는 두 가지가 있습니다. 첫째, App::abort 메소드를 사용할 수 있습니다:
App::abort(404);
둘째, SymfonyComponentHttpKernelExceptionNotFoundHttpException의 인스턴스를 발생시킬 수 있습니다.
404 예외 처리 및 이러한 오류에 대한 사용자 지정 응답 사용에 대한 자세한 내용은 오류 장에서 확인할 수 있습니다.
컨트롤러로 라우팅
Laravel을 사용하면 클로저로 라우팅할 수 있을 뿐만 아니라 컨트롤러 클래스로 라우팅할 수도 있으며 리소스 컨트롤러를 생성할 수도 있습니다.
자세한 내용은 액세스하세요. 컨트롤러 문서.
Laravel 프레임워크 라우팅 구성 요약 및 설정 팁과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!