>  기사  >  php教程  >  Laravel 프레임워크 라우팅 구성 요약 및 설정 팁

Laravel 프레임워크 라우팅 구성 요약 및 설정 팁

高洛峰
高洛峰원래의
2016-12-27 11:12:491454검색

기본 경로

애플리케이션 경로의 대부분은 app/routes.php 파일에 정의됩니다. Laravel에서 가장 간단한 경로는 URI와 클로저 호출로 구성됩니다.

기본 GET 경로

<span style="font-size: 16px;">Route::get(&#39;/&#39;, function()<br/>{<br/>return &#39;Hello World&#39;;<br/>});<br/></span>

기본 POST 경로

<span style="font-size: 16px;">Route::post(&#39;foo/bar&#39;, function()<br/>{<br/>return &#39;Hello World&#39;;<br/>});<br/></span>

등록 모든 HTTP 메소드에 응답하도록 라우팅

<span style="font-size: 16px;">Route::any(&#39;foo&#39;, function()<br/>{<br/>   return &#39;Hello World&#39;;<br/>});<br/></span>

HTTPS를 통해 경로에 강제로 액세스

<span style="font-size: 16px;">Route::get(&#39;foo&#39;, array(&#39;https&#39;, function()<br/>{<br/>    return &#39;Must be over HTTPS&#39;;<br/>}));<br/></span>

종종 생성해야 하는 경우가 있음 경로 기반 URL의 경우 URL::to 메소드를 사용하여 이를 수행할 수 있습니다:

<span style="font-size: 16px;">$url = URL::to(&#39;foo&#39;);<br/></span>

경로 매개변수

<span style="font-size: 16px;">Route::get(&#39;user/{id}&#39;, function($id)<br/>{<br/>return &#39;User &#39;.$id;<br/>});<br/></span>

선택적 경로 매개변수

<span style="font-size: 16px;">Route::get(&#39;user/{name?}&#39;, function($name = null)<br/>{<br/>return $name;<br/>});<br/></span>

기본값이 있는 선택적 경로 매개변수

<span style="font-size: 16px;">Route::get(&#39;user/{name?}&#39;, function($name = &#39;John&#39;)<br/>{<br/>return $name;<br/>});<br/></span>

정규식 제약 조건이 있는 경로

<span style="font-size: 16px;">Route::get(&#39;user/{name}&#39;, function($name)<br/>{<br/>//<br/>})<br/>->where(&#39;name&#39;, &#39;[A-Za-z]+&#39;);<br/>Route::get(&#39;user/{id}&#39;, function($id)<br/>{<br/>//<br/>})<br/>->where(&#39;id&#39;, &#39;[0-9]+&#39;);<br/></span>

경로 필터

경로 필터는 사이트에 대해 생성해야 하는 특정 경로에 대한 액세스를 제한하는 간단한 방법을 제공합니다. 지역. Laravel 프레임워크에는 auth 필터, auth.basic 필터, 게스트 필터 및 csrf 필터와 같은 일부 라우팅 필터가 포함되어 있습니다. app/filters.php 파일에 저장됩니다.

라우팅 필터 정의

Route::filter(&#39;old&#39;, function()
{
if (Input::get(&#39;age&#39;) < 200)
{
return Redirect::to(&#39;home&#39;);
}
});

라우팅 필터에서 응답이 반환되면 이 응답은 이 요청에 대한 응답으로 간주되며 해당 경로의 라우팅은 실행되지 않습니다. after 필터도 실행 취소됩니다.

Route::get(&#39;user&#39;, array(&#39;before&#39; => &#39;old&#39;, function()
{
return &#39;You are over 200 years old!&#39;;
}));

경로에 대한 경로 필터 지정

Route::get(&#39;user&#39;, array(&#39;before&#39; => &#39;auth|old&#39;, function()
{
return &#39;You are authenticated and over 200 years old!&#39;;
}));

경로 필터 매개변수 지정

Route::filter(&#39;age&#39;, function($route, $request, $value)
{
//
});
Route::get(&#39;user&#39;, array(&#39;before&#39; => &#39;age:200&#39;, function()
{
return &#39;Hello World&#39;;
}));

경로 필터가 세 번째로 매개변수에 대한 응답을 수신하는 경우 $ 응답:

Route::filter(&#39;log&#39;, function($route, $request, $response, $value)
{
//
});

기본 경로 필터 패턴

URI를 기반으로 경로 집합에 대한 필터를 지정할 수 있습니다.

Route::filter(&#39;admin&#39;, function()
{
//
});
Route::when(&#39;admin/*&#39;, &#39;admin&#39;);

위의 예에서 admin 필터는 admin/으로 시작하는 모든 경로에 적용됩니다. 별표는 와일드카드 문자 역할을 하며 모든 문자 조합과 일치합니다.

HTTP 메소드를 지정하여 패턴 필터를 제한할 수도 있습니다.

Route::when(&#39;admin/*&#39;, &#39;admin&#39;, array(&#39;post&#39;));

필터 클래스

고급 필터의 경우 클로저 함수 대신 클래스를 사용할 수 있습니다. 필터 클래스는 애플리케이션 외부에 있는 IoC 컨테이너이므로 필터에 종속성 주입을 사용하여 테스트하기가 더 쉽습니다.

필터 클래스 정의

class FooFilter {
public function filter()
{
// Filter logic...
}
}

클래스 기반 필터 등록

Route::filter(&#39;foo&#39;, &#39;FooFilter&#39;);

이름이 지정된 경로

지정에서 이름이 지정된 경로를 더 쉽게 사용할 수 있습니다. 리디렉션 또는 URL을 생성할 때 경로를 지정합니다. 다음과 같이 경로 이름을 지정할 수 있습니다.

Route::get(&#39;user/profile&#39;, array(&#39;as&#39; => &#39;profile&#39;, function()
{
//
}));

컨트롤러 메서드에 경로 이름을 지정할 수도 있습니다.

  Route::get(&#39;user/profile&#39;, array(&#39;as&#39; => &#39;profile&#39;, &#39;uses&#39; => 
&#39;UserController@showProfile&#39;));

이제 URL 또는 점프를 생성할 때 경로 이름:

$url = URL::route(&#39;profile&#39;);
$redirect = Redirect::route(&#39;profile&#39;);

currentRouteName 메소드를 사용하여 경로 이름을 가져올 수 있습니다:

$name = Route::currentRouteName();

Route Group

가끔 다음을 원할 수도 있습니다. 일련의 경로에 필터를 적용합니다. 각 경로에 대해 필터를 지정할 필요가 없으며 경로 그룹을 사용할 수 있습니다.

Route::group(array(&#39;before&#39; => &#39;auth&#39;), function()
{
Route::get(&#39;/&#39;, function()
{
// Has Auth Filter
});
Route::get(&#39;user/profile&#39;, function()
{
// Has Auth Filter
});
});

하위 도메인 라우팅

Laravel 라우팅은 와일드카드 하위 도메인을 처리하고 도메인 이름에서 와일드카드를 가져올 수도 있습니다. 매개변수:

하위 도메인 경로 등록

Route::group(array(&#39;domain&#39; => &#39;{account}.myapp.com&#39;), function()
{
Route::get(&#39;user/{id}&#39;, function($account, $id)
{
//
});
});

경로 접두사

경로 그룹은 속성 배열의 접두사 옵션을 사용하여 경로 그룹에 접두사를 추가할 수 있습니다.

경로 그룹에 접두사 추가

Route::group(array(&#39;prefix&#39; => &#39;admin&#39;), function()
{
Route::get(&#39;user&#39;, function()
{
//
});
});

경로 모델 바인딩

모델 바인딩은 모델을 경로에 삽입하는 간단한 방법을 제공합니다. 예를 들어 단순히 사용자 ID를 주입하는 대신 지정된 ID를 기반으로 전체 사용자 모델 인스턴스를 주입할 수 있습니다. 먼저 Route::model 메서드를 사용하여 필요한 모델을 지정합니다.

변수를 모델에 바인딩

Route::model(&#39;user&#39;, &#39;User&#39;);

그런 다음 {user} 매개변수가 포함된 경로를 정의합니다.

Route::get(&#39;profile/{user}&#39;, function(User $user)
{
//
});

{user} 매개변수를 User 모델에 바인딩했으므로 User 인스턴스가 경로에 주입됩니다. 예를 들어 profile/1에 대한 요청은 ID 1의 User 인스턴스를 주입합니다.

참고: 이 모델 인스턴스가 데이터베이스에 없으면 404 오류가 발생합니다.

발견되지 않은 자신만의 동작을 지정하려면 클로저를 모델 메소드의 세 번째 인수로 전달할 수 있습니다.

Route::model(&#39;user&#39;, &#39;User&#39;, function()
{
throw new NotFoundException;
});

때로는 자신만의 메소드를 사용하고 싶을 때도 있습니다. 경로 매개변수를 처리하려면 Route::bind 메서드를 사용할 수 있습니다.

Route::bind(&#39;user&#39;, function($value, $route)
{
return User::where(&#39;name&#39;, $value)->first();
});

404 오류를 트리거합니다.

경로에서 404 오류를 수동으로 트리거하는 방법에는 두 가지가 있습니다. 첫째, App::abort 메소드를 사용할 수 있습니다:

App::abort(404);

둘째, SymfonyComponentHttpKernelExceptionNotFoundHttpException의 인스턴스를 발생시킬 수 있습니다.

404 예외 처리 및 이러한 오류에 대한 사용자 지정 응답 사용에 대한 자세한 내용은 오류 장에서 확인할 수 있습니다.

컨트롤러로 라우팅

Laravel을 사용하면 클로저로 라우팅할 수 있을 뿐만 아니라 컨트롤러 클래스로 라우팅할 수도 있으며 리소스 컨트롤러를 생성할 수도 있습니다.

자세한 내용은 액세스하세요. 컨트롤러 문서.

Laravel 프레임워크 라우팅 구성 요약 및 설정 팁과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.