백엔드 개발 PHP 튜토리얼 Yii 프레임워크에서 URL 생성 문제 해결

Yii 프레임워크에서 URL 생성 문제 해결

Jun 19, 2018 pm 01:54 PM
url

yii 프레임워크의 URL 생성 문제 요약, 도움이 필요한 친구들이 참고할 수 있습니다.

코드는 다음과 같습니다.

<?php echo CHtml::link(&#39;错误链接&#39;,&#39;user/register&#39;)?> 
<?php echo CHtml::link(&#39;正确链接&#39;,array(&#39;user/register&#39;))?>
로그인 후 복사

UrlManager의 구성이 경로 모드로 설정되고 Yii의 기본 구성이 사용된다고 가정합니다.

&#39;urlManager&#39;=>array( 
&#39;urlFormat&#39;=>&#39;path&#39;, 
&#39;rules&#39;=>array( 
&#39;<controller:\w+>/<id:\d+>&#39;=>&#39;<controller>/view&#39;, 
&#39;<controller:\w+>/<action:\w+>/<id:\d+>&#39;=>&#39;<controller>/<action>&#39;, 
&#39;<controller:\w+>/<action:\w+>&#39;=>&#39;<controller>/<action>&#39;, 
), 
),
로그인 후 복사

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

/** 
* Normalizes the input parameter to be a valid URL. 
* 
* If the input parameter is an empty string, the currently requested URL will be returned. 
* 
* If the input parameter is a non-empty string, it is treated as a valid URL and will 
* be returned without any change. 
* 
* If the input parameter is an array, it is treated as a controller route and a list of 
* GET parameters, and the {@link CController::createUrl} method will be invoked to 
* create a URL. In this case, the first array element refers to the controller route, 
* and the rest key-value pairs refer to the additional GET parameters for the URL. 
* For example, <code>array(&#39;post/list&#39;, &#39;page&#39;=>3)</code> may be used to generate the URL 
* <code>/index.php?r=post/list&page=3</code>. 
* 
* @param mixed $url the parameter to be used to generate a valid URL 
* @return string the normalized URL 
*/ 
public static function 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=&#39;&#39;; 
} 
return $url===&#39;&#39; ? Yii::app()->getRequest()->getUrl() : $url; 
}
로그인 후 복사
위 내용은 모두의 학습에 도움이 되기를 바랍니다.

관련 권장 사항:

yii 페이징 구성 요소 사용에 대해

부트스트랩 페이징 스타일을 사용하는 yii에 대해

Yii2.0 테이블 연관 쿼리 분석

위 내용은 Yii 프레임워크에서 URL 생성 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Jul 25, 2023 am 09:05 AM

PHP 기능 소개 - get_headers(): URL의 응답 헤더 정보 얻기 개요: PHP 개발에서는 웹 페이지나 원격 리소스의 응답 헤더 정보를 얻어야 하는 경우가 많습니다. PHP 함수 get_headers()를 사용하면 대상 URL의 응답 헤더 정보를 쉽게 얻고 이를 배열 형식으로 반환할 수 있습니다. 이 기사에서는 get_headers() 함수의 사용법을 소개하고 관련 코드 예제를 제공합니다. get_headers() 함수 사용법: get_header

e의 NameResolutionError(self.host, self, e) 이유와 해결 방법 e의 NameResolutionError(self.host, self, e) 이유와 해결 방법 Mar 01, 2024 pm 01:20 PM

오류의 원인은 urllib3 라이브러리의 예외 유형인 NameResolutionError(self.host,self,e)frome입니다. 이 오류의 원인은 DNS 확인에 실패했기 때문입니다. 해결을 찾을 수 없습니다. 이는 입력한 URL 주소가 정확하지 않거나 DNS 서버를 일시적으로 사용할 수 없기 때문에 발생할 수 있습니다. 이 오류를 해결하는 방법 이 오류를 해결하는 방법은 여러 가지가 있습니다. 입력한 URL 주소가 올바른지 확인하고 액세스할 수 있는지 확인하십시오. DNS 서버를 사용할 수 있는지 확인하십시오. 명령줄에서 "ping" 명령을 사용해 볼 수 있습니다. DNS 서버를 사용할 수 있는지 테스트하려면 프록시 뒤에 있는 경우 호스트 이름 대신 IP 주소를 사용하여 웹사이트에 액세스해 보세요.

몇 단계만으로 Steam ID를 얻는 방법은 무엇입니까? 몇 단계만으로 Steam ID를 얻는 방법은 무엇입니까? May 08, 2023 pm 11:43 PM

요즘에는 게임을 좋아하는 많은 Windows 사용자들이 Steam 클라이언트에 접속하여 좋은 게임을 검색하고 다운로드하여 플레이할 수 있습니다. 그러나 많은 사용자의 프로필이 정확히 동일한 이름을 가질 수 있으므로 프로필을 찾거나 Steam 프로필을 다른 제3자 계정에 연결하거나 Steam 포럼에 가입하여 콘텐츠를 공유하기가 어렵습니다. 프로필에는 고유한 17자리 ID가 할당되며, 이는 동일하게 유지되며 사용자가 언제든지 변경할 수 없는 반면, 사용자 이름이나 맞춤 URL은 변경할 수 있습니다. 그럼에도 불구하고 일부 사용자는 자신의 Steamid를 모르므로 이를 아는 것이 중요합니다. 계정의 Steamid를 찾는 방법을 모르더라도 당황하지 마세요. 이 기사에서는

HTML과 URL의 차이점은 무엇입니까 HTML과 URL의 차이점은 무엇입니까 Mar 06, 2024 pm 03:06 PM

차이점: 1. 정의가 다릅니다. url은 균일한 리소스 위치 지정자이고 html은 하이퍼텍스트 마크업 언어입니다. 2. html에는 여러 개의 URL이 있을 수 있지만 하나의 url에는 단 하나의 html 페이지만 존재할 수 있습니다. 웹 페이지이고 url은 웹 사이트 주소를 나타냅니다.

Java에서 URL 인코딩 및 디코딩을 사용하는 방법 Java에서 URL 인코딩 및 디코딩을 사용하는 방법 May 08, 2023 pm 05:46 PM

url을 사용하여 java.net.URLDecoder.decode(url, 디코딩 형식) 클래스 decoder.decoding 인코딩 및 디코딩 방법을 인코딩 및 디코딩합니다. 일반 문자열로 변환하는 URLEncoder.decode(url, 인코딩 형식)는 일반 문자열을 지정된 형식의 문자열로 변환합니다. packagecom.zixue.springbootmybatis.test;importjava.io.UnsupportedEncodingException;importjava.net.URLDecoder;importjava.net. URL인코더

Scrapy 최적화 팁: 중복 URL 크롤링을 줄이고 효율성을 높이는 방법 Scrapy 최적화 팁: 중복 URL 크롤링을 줄이고 효율성을 높이는 방법 Jun 22, 2023 pm 01:57 PM

Scrapy는 인터넷에서 대량의 데이터를 얻는 데 사용할 수 있는 강력한 Python 크롤러 프레임워크입니다. 그러나 Scrapy를 개발할 때 중복된 URL을 크롤링하는 문제에 자주 직면하게 되는데, 이는 많은 시간과 자원을 낭비하고 효율성에 영향을 미칩니다. 이 기사에서는 중복 URL의 크롤링을 줄이고 Scrapy 크롤러의 효율성을 향상시키는 몇 가지 Scrapy 최적화 기술을 소개합니다. 1. Scrapy 크롤러의 start_urls 및 allowed_domains 속성을 사용하여

SpringBoot 다중 컨트롤러에 URL 접두사를 추가하는 방법 SpringBoot 다중 컨트롤러에 URL 접두사를 추가하는 방법 May 12, 2023 pm 06:37 PM

서문 어떤 경우에는 서비스 컨트롤러의 접두사가 일관됩니다. 예를 들어 모든 URL의 접두사는 /context-path/api/v1이고 일부 URL에는 통합 접두사를 추가해야 합니다. 가능한 해결책은 서비스의 context-path를 수정하고 api/v1을 context-path에 추가하는 것입니다. 전역 접두사를 수정하면 위의 문제를 해결할 수 있지만 URL에 여러 접두사가 있는 경우 단점이 있습니다. URL에는 접두사가 필요합니다. api/v2인 경우 서비스의 일부 정적 리소스에 api/v1을 추가하지 않으려면 구별할 수 없습니다. 다음은 사용자 정의 주석을 사용하여 특정 URL 접두어를 균일하게 추가합니다. 하나,

URL이 무슨 뜻인가요? URL이 무슨 뜻인가요? Aug 04, 2023 am 11:43 AM

URL은 "Uniform Resource Locator"의 약자로 중국어로 "Uniform Resource Locator"를 의미합니다. URL은 인터넷을 통해 특정 리소스를 찾고 액세스하는 데 사용되는 주소입니다. 웹 검색 및 HTTP 요청에서 흔히 볼 수 있습니다. URL의 주요 기능은 인터넷에서 리소스를 찾고 액세스하는 것입니다. 이러한 리소스는 웹 페이지, 사진, 비디오, 문서 또는 기타 파일일 수 있습니다.

See all articles