Home  >  Article  >  Backend Development  >  Detailed explanation of the method of generating URL in Yii2 framework

Detailed explanation of the method of generating URL in Yii2 framework

巴扎黑
巴扎黑Original
2018-05-21 11:40:241787browse

This article mainly introduces the method of generating URL in Yii2. The editor thinks it is quite good. Now I will share it with you and give it as a reference. Let’s follow the editor and take a look.

Preface

In the project, it is recommended to use Yii2’s built-in URL tool class to generate links, which can very conveniently manage the entire site. URL behavior: For example, changing the URL format of the entire site by modifying the configuration, etc. For more advanced usage of URLs, please refer to the official documentation. This article only introduces several ways for Yii2 to generate URLs.

Yii2 Default URL link format

Yii2 Default URL link format refers to the format when URL beautification is enabled.

URL format for submodules not enabled:

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

URL format for submodules enabled:

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

Yii2 built-in URL generation tool

  1. URL Manager: urlManager

  2. URL Helper Class: yii\helpers\Url

Use built-in URL generation tool, you can beautify the URL of the entire site through configuration without changing the source code

URL Manager

URL Manager is A built-in application component called urlManager. Create URLs in WEB applications and console applications in the following two ways:

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

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

createUrl The method generates a relative path to the root directory, for example: /index.php?r=article/view

createAbsoluteUrl() The method generates an absolute path, for example: http: //www.example.com/index.php?r=article/view

Common examples of using URL managers to create URLs:

// 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 helper class

Compared with the URL manager, using the yii\helpers\Url helper class can greatly simplify the creation of URLs.

1. Assume that the current URL /index.php?r=kernel/article/view&id=10, the following description of the URL helper class Url::to() is How it works (not recommended):

// 创建当前 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. Assume the current URL /index.php?r=kernel/article/view&id=10, the following description URL helper class Url ::toRoute() How the method works (recommended):

// 创建当前路由(仅继承参数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. Assume the current URL /index.php?r=kernel/article/view&id=10, The following explains how the URL helper class Url::current() method works (recommended):

// 创建当前 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]);

The above is the detailed content of Detailed explanation of the method of generating URL in Yii2 framework. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn