> 백엔드 개발 > PHP 튜토리얼 > URL을 생성하는 Yii2 방법

URL을 생성하는 Yii2 방법

小云云
풀어 주다: 2023-03-20 10:38:01
원래의
1644명이 탐색했습니다.

프로젝트에서는 Yii2의 내장 URL 도구 클래스를 사용하여 링크를 생성하는 것이 좋습니다. 이는 전체 사이트의 URL 동작을 매우 편리하게 관리할 수 있습니다. 예를 들어, 구성. URL의 고급 사용법에 대해서는 공식 문서를 참조하세요. 이 문서에서는 Yii2가 URL을 생성하는 몇 가지 방법만 소개합니다.

Yii2 기본 URL 링크 형식

Yii2 기본 URL 링크 형식은 URL 미화를 켰을 때의 형식을 말합니다.

하위 모듈이 활성화되지 않은 URL 형식:


// 参数 r 中的 article 表示控制器, view 表示动作
http://www.example.com/index.php?r=article/view&id=100
로그인 후 복사

하위 모듈이 활성화된 URL 형식:


// 参数 r 中的 kernel 表示子模块
http://www.example.com/index.php?r=kernel/article/view&id=100
로그인 후 복사

Yii2 내장 URL 생성 도구

  1. URL 관리자: urlManager

  2. URL 도우미 클래스 : yiihelpersUrl

내장된 URL 생성 도구를 사용하면 소스 코드 변경 없이 구성을 통해 전체 사이트의 URL을 아름답게 꾸밀 수 있습니다

URL Manager

URL Manager는 이름 그대로 내장된 애플리케이션입니다. urlManager라는 구성요소입니다. URL은 다음 두 가지 방법으로 웹 애플리케이션과 콘솔 애플리케이션에서 생성할 수 있습니다.

  1. Yii::$app->urlManager->createUrl($params)

  2. Yii::$app-> ->createAbsoluteUrl($params, $schema = null)

createUrl 메소드는 루트 디렉토리의 상대 경로를 생성합니다. 예: /index.php?r=article/viewcreateUrl 方法生成根目录的相对路径,例如:/index.php?r=article/view

createAbsoluteUrl() 方法生成的是绝对路径,例如:http://www.example.com/index.php?r=article/view

常见的利用 URL 管理器创建 URL 的例子:


// URL:/index.php?r=article/view
\Yii::$app->urlManager->createUrl('article/view');

// URL:/index.php?r=article/view&id=2
\Yii::$app->urlManager->createUrl(['article/view','id'=>2]);

// URL: http://www.example.com?r=kernel/article/view
echo \Yii::$app->urlManager->createAbsoluteUrl('kernel/article/view');
로그인 후 복사

URL 助手类

相对于 URL管理器,使用 yiihelpersUrl 助手类可大大简化 URL 的创建。

1. 假设当前 URL /index.php?r=kernel/article/view&id=10,以下说明 URL 助手类 Url::to() 是如何工作的(不推荐):


// 创建当前 URL
// 显示:/?r=kernel/article/view&id=10
echo Url::to();

// 创建当前 URL
// 显示:http://www.example.com/?r=kernel/article/view&id=10
echo Url::to('', true);

// 字符参数,没啥用
// 显示:kernel/article/view
echo Url::to('kernel/article/view');

// 创建路由,数组参数的自动调用 Url::toRoute(...)
// 显示:/index.php?r=kernel/article/view
echo Url::to(['article/view']);
로그인 후 복사

2. 假设当前 URL /index.php?r=kernel/article/view&id=10,以下说明 URL 助手类 Url::toRoute() 方法是如何工作的(推荐):


// 创建当前路由(仅继承参数r的值)
// 显示:/index.php?r=kernel/article/view
echo Url::toRoute([]);

// 相同的模块和控制器,不同的动作(仅继承参数r的值)
// 显示:/index.php?r=kernel/article/list
echo Url::toRoute('list');

// 相同的模块和控制器,不同的动作(仅继承参数r的值)
// 显示:/index.php?r=kernel/article/list&cat=contact
echo Url::toRoute(['list','cat'=>10]);

// 相同模块,不同控制器和动作(仅继承参数r的值)
// 显示:/index.php?r=kernel/product/index
echo Url::toRoute('product/index');

// 绝对路由,不管是被哪个模块和控制器调用
// 显示:/index.php?r=product/index
echo Url::toRoute('/product/index');

// 控制器动作 `actionListHot` 的 URL 格式(仅继承参数r的值,区分大小写)
// 显示:/index.php?r=kernel/article/list-hot
echo Url::toRoute('list-hot');

// 从别名中获取 URL 
// 显示:http://www.baidu.com/
Yii::setAlias('@baidu', 'http://www.baidu.com/');
echo Url::to('@baidu');
로그인 후 복사

3. 假设当前 URL /index.php?r=kernel/article/view&id=10,以下说明 URL 助手类 Url::current()

createAbsoluteUrl() 메서드는 절대 경로를 생성합니다. 예: http://www.example.com/index.php?r=article/view


Common URL 관리 URL 관리자를 사용하여 URL을 생성하는 예:


// 创建当前 URL(包括路由和参数)
// 显示:/?r=kernel/article/view&id=10
echo Url::current();

// 移除参数 id
// 显示:/?r=kernel/article/view
echo Url::current(['id'=>null]);

// 新增参数 cat
// 显示:/?r=kernel/article/view&id=10&cat=2
echo Url::current(['cat'=>2]);
로그인 후 복사

URL 도우미 클래스

URL 관리자와 관련하여 yiihelpersUrl 도우미 클래스를 사용하면 URL 생성을 크게 단순화할 수 있습니다. . 1. 현재 URL /index.php?r=kernel/article/view&id=10을 가정하고, 다음은 URL 도우미 클래스 Url::to() )를 설명합니다. > 작동함(권장되지 않음):

rrreee

2. 현재 URL /index.php?r=kernel/article/view&id=10이 URL 도우미 클래스에 대한 다음 설명이라고 가정합니다. Url:: toRoute() 메소드 작동 방식(권장): 🎜🎜🎜🎜rrreee🎜3 현재 URL /index.php?r=kernel/article/view&id=10을 가정합니다. , 다음과 같이 URL 도우미 클래스 Url::current() 메서드 작동 방식을 설명합니다(권장): 🎜🎜🎜🎜rrreee🎜관련 권장 사항: 🎜🎜🎜🎜php 요청 url 메서드 요약 🎜🎜🎜🎜javascript URL을 json 형식으로 파싱하는 두 가지 방법🎜🎜🎜🎜Laravel에서 url()의 루트 주소를 수정하는 방법에 대한 자세한 설명🎜🎜

위 내용은 URL을 생성하는 Yii2 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿