Home  >  Article  >  Backend Development  >  Yii2 method to generate URL

Yii2 method to generate URL

小云云
小云云Original
2018-02-12 14:43:501559browse

In the project, it is recommended to use Yii2's built-in URL tool class to generate links, which can very conveniently manage the URL behavior of the entire site: for example, changing the URL format of the entire site by modifying the configuration. 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 when submodules are not enabled:


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

URL format when submodules are 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

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

URL Manager

The 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

Relative to 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 explains how the URL helper class Url::toRoute() 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]);

Related recommendations:

Summary of how to request url in php

javascript parses url into json format Two methods

Detailed explanation of modifying the root address of url() in Laravel

The above is the detailed content of Yii2 method to generate URL. 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