热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Yii2全面解析之URL的处理

Yii中Url的处理,包括,默认路由,pathinfo,自定义路由,生成URL,Url历

点击 小韩说理 关注!


概述


URL的美化工作, 一向都是SEO同志们的基本工作. 因此良好的URL格式, 也是我们处理用户接口程序需要提供的基本内容.

本章, 就告诉到家如何去处理Yii2中的URL


默认的URL格式


使用请求参数r, 表示当前的路由, 例如

index.php?r=Site/login

以上的URL就请求 SiteController的login动作


默认路由配置


如果没有提供r参数, 由配置中的默认路由指定控制器和动作.

配置项defaultRoute可以完成默认路由的配置, 例如:

配置文件: main.php
defaultRoute => 'Site/index'

这样site/index就是默认的控制器和动作

除了同时指定控制器和动作, defaultRoute还可以仅仅指定默认的控制器部分, 例如:

配置文件: main.php
defaultRoute => 'Site'

此时, 默认的动作就由Site控制器的属性defaultAction来决定, 例如:

SiteController.php中的代码
/**
* Site controller
*/
class SiteController extends Controller
{
// 当前控制器中的默认动作
public $defaultAction = 'about';
}


自定义URL样式(美化URL样式)


如果对r=controller/action这种通用的样式不满意, Yii2中允许自定义URL样式. 需要使用urlManager组件完成.

配置urlManager组件:

main.php配置文件, 组件配置
'components' => [
// URL管理组件
'urlManager' => [
// 是否开启美化URL
'enablePrettyUrl' => true,
// 是否显示入口文件脚本
'showScriptName' => true,
// URL 后缀
'suffix' => '.html',
// 自定义的路由规则
'rules' => [
// 暂时无规则
],
]

上面的配置, 就开启了美化URL功能. 同时选择的隐藏入口文件脚本, 并配置了URL后缀为.html

在没有定义自定义URL样式规则时, URL被美化成典型的pathinfo模式, 例如:

index.php?r=Site/login

这个地址就会被美化成:

Site/login.html

这样 使用Site/login.html这个URL就可以访问到SiteController的actionLogin动作了


如果pathinfo还没有达到你的美化的目的, 则需要自定义规则了, 在rules配置中增加:

'rules' => [
// patttern, 规则, URL格式
// restful路由
['class' => 'yii\rest\UrlRule', 'controller' => 'role'],
'register' => 'site/register',
'login' => 'site/login',
// 请求方法的限制
'POST users' => 'user/create',
// 请求参数的处理
'users/' => 'user/options'
],


通过rules配置项, 就定义了典型的自定义URL, 上面的配置中,

  • 请求: login.html就可以路由到site/login

  • POST方式请求: users, 就可以路由到user/create

  • 携带数据请求: users/42, 就可以路由到user/options, 并同时携带请求参数ID过去

这几种就是典型自定义URL的写法.


URL的生成


由于URL在程序中有多种形式. 因此需要根据当前的配置生成不同的URL, 而不能写成固定死的.

通过yii\helpers\Url::to()方法可以生成url

该方法, 也支持在配置美化路由后, 自动生成美化后的URL, 使用方法如下:

在控制器或者是视图模板中:

Url::to('site/login')// login.html
URL::to(['user/options', ['id'=>42]])// user/42.html
URL::to(['user/options', ['id'=>42]], true)// http://hellokang.net/user/42.html
URL::to(['user/options', ['id'=>42]], 'https')// https://helloknag.net/user/42.html

Url::to([‘路由’, 额外参数], false|true|http|https)

  • 参数1: 路由和携带参数

  • 参数2: 是否为绝对地址, 包含域名部分的绝对地址, 可以指定协议

此时, 就可以基于我们的配置, 形成需要的URL啦!

一定要用该方法形成URL, 不要自己写死了, 否则更新就是你的噩梦.


除了URL::to()这个通用的URL生成方法之外, Url助手还提供了下面的几个快捷处理Url的方法:

  • Url::base(), 站点根Url

  • Url::home(), 首页Url

  • Url::remember(), Url::previous(), 记录Url历史, 和返回上一个Url


结语


URl的处理就说到了这里. 使用简单功能强大.

一家之言, 欢迎补充, 拍砖.


更新, 更专业的PHP, Python, 前端的资源, 可以关注微信公众号: 小韩说理.

直接扫描右侧二维码即可, 关注哦.






推荐阅读
author-avatar
臻艾龙522_292
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有