>백엔드 개발 >PHP 튜토리얼 >yii yii 프레임워크의 URL 생성 문제 요약

yii yii 프레임워크의 URL 생성 문제 요약

WBOY
WBOY원래의
2016-07-29 08:47:42886검색

코드 복사 코드는 다음과 같습니다.





UrlManager가 경로 모드로 설정되었습니다. yii 기본 구성을 사용하세요.

코드 복사 코드는 다음과 같습니다.


'urlManager' =>array(
'urlFormat'=>'경로',
'rules'=>array(
'/'= >'/view',
'//'=>'/< action>',
'/'=>'/',
),
),


위 두 줄의 코드는 어떤 링크 주소를 생성하게 될까요?
http:///user/register //잘못된 링크
http:///index.php/user/register //올바른 링크
아니요 링크가 잘못된 경우 브라우저는 404 오류를 반환합니다. 두 번째 링크는 UserController의 Register 메서드에 액세스합니다. 차이점은 두 번째 링크가 생성될 때 전달하는 매개변수는 배열인 반면 첫 번째 방법은 간단한 문자열이라는 것입니다. Yii는 Url을 처리할 때 단순 문자열을 발견하면 해당 문자열을 최종 Url로 직접 사용합니다. 배열을 발견하면 컨트롤러의 CreateUrl을 호출하여 Url을 생성합니다.
이 두 가지는 단순 문자열입니다. 실제로 두 링크 사이에는 매우 본질적인 차이가 있습니다. 'user/register' 문자열이기도 하지만 첫 번째 문자열은 13자 상대 경로를 나타내고 두 번째 링크는 특별한 의미를 갖는 UserController의 RegisterAction을 나타냅니다.
첨부된 것은 Yii의 Url 처리 방식 NormalizeUrl의 소스코드입니다:

코드 복사 코드는 다음과 같습니다.


/**
* 입력 매개변수를 유효한 URL로 정규화합니다.
*
* 입력 매개변수가 빈 문자열인 경우 현재 요청된 URL이 반환됩니다.
*
* 입력 매개변수가 비어 있지 않은 문자열인 경우 유효한 URL로 간주되어
* 변경 없이 반환됩니다.
*
* 입력 매개변수가 배열인 경우 컨트롤러 경로와
* GET 매개변수 목록으로 처리되며, {@link CController::createUrl} 메서드가 * URL을 만듭니다. 이 경우 첫 번째 배열 요소는 컨트롤러 경로
*를 참조하고 나머지 키-값 쌍은 URL에 대한 추가 GET 매개변수를 참조합니다.
* 예를 들어 array('post/list', 'page'=>3) URL
* /index.php?r=post/list&page=3을 생성하는 데 사용될 수 있습니다.
*
* @param $url 유효한 URL을 생성하는 데 사용할 매개변수 혼합
* @return string 정규화된 URL
*/
공용 정적 함수 NormalizeUrl($url)
{
if(is_array($url))
{
if(isset($url[0 ]))
{
if(($c=Yii::app()->getController())!==null)
$url=$c->createUrl($url[ 0],array_splice($url,1));
else
$url=Yii::app()->createUrl($url[0],array_splice($url,1))
}
else
$url='';
}
return $url==='' ? Yii::app()->getRequest()->getUrl() : $url
}

이상은 yii 콘텐츠를 포함하여 yii yii 프레임워크의 Url 생성 문제에 대한 요약을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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