이전 Yii Framework 개발 간결 튜토리얼(4) Hangman 단어 추측 게임 예제에서는 몇 가지 문제가 생략되었습니다. 하나는 구성 파일 main.php의 URLManager이고, 다른 하나는 Controller의 기본 클래스 CComponent이며, third is the definition. CHtml helper class used by View.本篇战开介绍URLManager,URL管理。
return array( ... 'components'=>array( 'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( 'game/guess/'=>'game/guess', ), ), ), );
Web应用程序完整的URL管理包括两个方面。首先, 当用户请求约定的URL,应用程序需要解析它变成可以理解的参数。第二 ,应用程序需求提供一种创造URL的方法,以便创建的URL应用程序可以理解的。对于Yii应用程序,这些通过CUrlManager辅助完成。 Path Format URL을 사용할 때 특정 URL 규칙을 지정하여 URL을보다 사용자 친화적으로 만들 수 있습니다. 예를 들어, 길고/index.php/post/read/id/100 대신 짧은 URL/post/100을 생성 할 수 있습니다. URL 생성 및 구문 분석은 CurlManager를 통해 URL 규칙을 지정하여 수행됩니다.
URL 규칙을 지정하려면 urlManager 애플리케이션 요소의 규칙 속성을 설정해야 합니다.
array( ...... 'components'=>array( ...... 'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( 'pattern1'=>'route1', 'pattern2'=>'route2', 'pattern3'=>'route3', ), ), ), );
이러한 규칙은 일련의 경로 형식 쌍 배열로 지정됩니다. 각 쌍은 단일 항목에 해당합니다. 규칙 . 경로의 형식은 구분 제 또는 수정자가없는 유효한 정규 표현이어야합니다. URL과 일치하는 데 사용되는 경로 정보의 일부입니다. 또한 경로는 유효한 경로 컨트롤러를 가리켜 야합니다. 규칙은 소수의 GET 매개 변수를 바인딩 할 수 있습니다. 매개변수의 일반적인 형식은 다음과 같습니다.
ParamName은 GET 매개변수 이름을 나타내고, 선택적 ParamPattern은 GET 매개변수 값을 일치시키는 데 사용되는 정규식을 나타냅니다. 웹 주소(URL)를 생성할 때 이러한 매개변수 토큰은 URL을 구문 분석할 때 해당 매개변수 값으로 대체되며, 결과를 구문 분석하여 해당 GET 매개변수가 생성됩니다. 우리는 몇 가지 예제를 사용하여 URL의 작동 방식을 설명합니다. 규칙에 다음 세 가지가 포함되어 있다고 가정해 보겠습니다.
array( 'posts'=>'post/list', 'post/'=>'post/read', 'post//요약하자면, createUrl을 사용하여 URL을 생성할 때 메소드에 전달된 경로 및 GET 매개변수는 적용되는 URL 규칙을 결정하는 데 사용됩니다. 연결 규칙의 각 매개변수를 GET 매개변수에서 찾을 수 있으면 createUrl로 전달됩니다. 경로 규칙도 경로 매개변수와 일치하면 규칙이 URL을 생성하는 데 사용됩니다. createUrl에 전달된 GET 매개변수가 위에 필요한 규칙 중 하나인 경우 다른 매개변수가 쿼리 문자열에 표시됩니다. 예를 들어, $this- >createUrl('post/read',array('id'=>100,'year'=>2008)) 을 호출하면 /index.php/post/100을 얻게 됩니다. 년 = 2008. 이러한 추가 매개변수를 경로 정보의 일부로 표시하려면 규칙에 /*를 추가해야 합니다. 따라서 post//* 규칙을 사용하면 /index.php/post/100/year/2008 URL을 얻을 수 있습니다. 앞서 언급한 것처럼 URL 규칙의 다른 용도는 요청 URL을 구문 분석하는 것입니다. 물론 이는 URL 생성의 역과정이다. 예를 들어, 사용자가 /index.php/post/100을 요청하면 위 예제의 두 번째 규칙이 적용되어 post/read 경로와 GET 매개변수 array('id'=>100)를 구문 분석합니다($를 통해 사용 가능). _얻다). createurl 메소드는 상대 주소를 생성합니다. 절대 URL을 얻으려면 yii"> 접두사를 붙일 수 있습니다. 참고: URL 규칙을 사용하면 애플리케이션 성능이 저하됩니다. 이는 요청된 URL을 구문 분석할 때 [CUrlManager]가 특정 규칙이 적용될 때까지 모든 규칙을 사용하여 트래픽이 많은 웹사이트 애플리케이션은 사용하는 URL 규칙을 최소화해야 합니다. 사용된 규칙 'game/guess/'=> game/guess',즉, 유사한 /game/guess/xx는 모두 GameController의 actionGuess 메소드인 game/guess에 매핑되고 GET 매개변수는 g=로 전달됩니다. 'x'를 각각 참조하세요. 문자 링크
CHtml::linkButton(chr($i),array('submit'=>array ('guess','g'=>chr($i))));클릭한 문자 링크는 main에 정의된 urlManager의 일치 규칙에 따라 /game/guess/?g=x입니다. .php에서 Yii 프레임워크는 GameController의 actionGuess 메소드를 호출합니다. GET 매개변수를 전달하면
// check to see if the letter is guessed correctly if(isset($_GET['g'][0]) && ($result=$this->guess($_GET['g'][0]))!==null) $this->render($result ? 'win' : 'lose'); else // the letter is guessed correctly, but not win yet { $guessed=$this->getPageState('guessed',array()); $guessed[$_GET['g'][0]]=true; $this->setPageState('guessed',$guessed,array()); $this->render('guess'); }使用urlManager 也允许自定义规则,或者隐藏 index.php 。에서 $_GET['g']를 통해 이 매개변수의 값에 액세스할 수 있습니다. 위 내용은 PHP 개발 프레임워크 Yii Framework 튜토리얼 내용입니다. (5) URL 관리 등 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요