>PHP 프레임워크 >YII >yii 프레임워크에서 라우팅을 정의하는 방법

yii 프레임워크에서 라우팅을 정의하는 방법

(*-*)浩
(*-*)浩원래의
2019-12-11 11:47:483920검색

yii 프레임워크에서 라우팅을 정의하는 방법

라우팅 및 URL 생성

YII 애플리케이션이 요청 처리를 시작할 때 가장 먼저 해야 할 일은 요청된 URL을 경로로 변환하는 것입니다. 라우팅의 역할은 요청을 처리하기 위해 해당 컨트롤러와 작업을 순차적으로 인스턴스화하는 것입니다. 전체 처리 프로세스를 라우팅이라고 합니다. ㅋㅋㅋ                        (추천 학습: yii 프레임워크 )

라우팅의 역과정을 URL 생성이라고 하는데, 이는 주어진 라우팅 및 매개변수 정보를 사용하여 URL을 생성하는 것을 의미합니다. 생성된 URL을 사용하여 요청을 하면 라우팅 처리 프로세스에서 이를 다시 구문 분석하고 원래 라우팅 및 매개변수 정보를 복원할 수 있습니다.

URL 관리자는 애플리케이션 구성 요소로 등록되는 라우팅 및 URL 생성을 주로 담당합니다. URL 관리자는 요청을 구문 분석하고 라우팅 및 매개변수 정보를 구문 분석하기 위해 구문 분석 요청() 메서드를 제공합니다.

createUrl() 메소드는 주어진 경로 및 매개변수 정보로부터 URL을 생성하는 데 사용됩니다. 애플리케이션 구성에서 URL 관리자를 구성하면 기존 프로그램 코드를 수정하지 않고도 애플리케이션이 모든 URL 형식을 인식할 수 있습니다. 예를 들어, 다음 코드를 사용하여 URL을 생성할 수 있습니다.

use yii\helpers\Url;
// Url::to() calls UrlManager::createUrl() to create a URL
$url = Url::to(['post/view', 'id' => 100]);

URL 관리자의 구성에 따라 위 코드로 생성된 URL은 다음과 같습니다. 이후에 이 URL이 요청되면 위의 원래 경로 및 매개변수 정보로 구문 분석됩니다.

/index.php?r=post/view&id=100
/index.php/post/100
/posts/100

URL 형식

URL 관리자는 기본 URL 형식과 예쁜 URL 형식의 두 가지 URL 형식을 지원합니다. 기본 URL 형식은 쿼리 매개변수 r을 사용하여 경로를 전달하고 다른 매개변수는 일반적인 방식으로 URL에 배치됩니다.

예를 들어 /index.php?r=post/view&id=100 URL의 경로는 post/view이고 매개변수 ID는 100입니다. 기본 URL 형식에는 URL 관리자 구성이 필요하지 않습니다.

아름다운 URL 형식은 항목 스크립트 이름 뒤에 추가 경로를 사용하여 경로 및 관련 매개변수를 표시합니다.

예를 들어 URL /index.php/post/100의 추가 경로는 /post/100이고 표시되는 경로는 post/view이며 매개변수 ID는 100입니다.

이 URL 형식을 사용하려면 실제 요구 사항에 따라 URL 규칙 집합을 설계해야 합니다. URL 관리자에서 활성화PrettyUrl 속성의 값을 수정하여 이 두 가지 URL 형식 간에 전환할 수 있습니다.

라우팅

라우팅 작업은 두 단계로 나눌 수 있습니다.

1. 요청에서 경로 및 관련 매개변수를 구문 분석합니다.

2. 요구 .

기본 URL 형식을 사용하는 경우 경로를 구문 분석하는 것은 매우 간단합니다. 매개변수 r의 값만 가져오면 됩니다.

예쁜 URL 형식을 사용하는 경우 URL 관리자는 URL 규칙 집합을 감지하고 관련 사항을 찾습니다. 요청 일치 경로에. 일치하는 규칙이 없으면 yiiwebNotFoundHttpException 예외가 발생합니다.

요청에서 경로가 해결되면 다음으로 해야 할 일은 해당 경로와 관련된 컨트롤러 작업을 만드는 것입니다. 경로는 여러 부분으로 슬래시로 잘립니다. 예를 들어 사이트/인덱스는 사이트와 인덱스로 잘립니다.

각 부분은 ID이며 모듈, 컨트롤러 또는 작업을 가리킬 수 있습니다. 경로의 첫 번째 부분부터 시작하여 모듈(있는 경우), 컨트롤러 및 작업을 생성하려면 다음 단계를 수행해야 합니다.

1 애플리케이션 본문을 현재 모듈로 설정합니다.

2. 현재 모듈의 yiibaseModule::controllerMap에 현재 ID가 포함되어 있는지 확인하세요. 그렇다면 테이블의 구성을 기반으로 컨트롤러 개체가 생성된 다음 5단계로 이동하여 경로의 후속 조각을 실행합니다.

3. ID가 현재 모듈의 yiibaseModule::modules 속성에 있는 모듈 목록에 있는 모듈을 가리키는지 확인하세요. 그렇다면 모듈 테이블의 구성을 기반으로 모듈 개체가 생성되고 새로 생성된 모듈은 다음 경로를 구문 분석하기 위해 2단계로 돌아가는 환경으로 사용됩니다.

4. ID를 컨트롤러 ID로 취급하고 컨트롤러 개체를 만듭니다. 다음 단계를 사용하여 경로의 나머지 조각을 구문 분석합니다.

5. 컨트롤러는 yiibaseController::actions()에서 현재 ID를 검색합니다. 발견되면 매핑 테이블의 구성을 기반으로 작업 개체를 생성하고, 그렇지 않으면 컨트롤러는 ID에 해당하고 작업 메서드에 의해 정의된 인라인 작업을 생성하려고 시도합니다.

위 단계에서 오류가 발생하면 애플리케이션에서 yiiwebNotFoundHttpException 예외가 발생합니다. 이는 라우팅 처리가 실패했음을 의미합니다.

위 내용은 yii 프레임워크에서 라우팅을 정의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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