热门标签 | 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, 前端的资源, 可以关注微信公众号: 小韩说理.

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






推荐阅读
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 我创建了一个新的AWSSSO(使用内部IDP作为身份源,因此不使用ActiveDirectory)。我能够登录AWSCLI、AWSGUI,但 ... [详细]
  • 原因:在vm上装7.9到sp3,打补丁到1644,再往后别打了,就打就打不开终端了,这个是java安全问题,以下只是终端的一些命令,记录一下:在系统下查看当前的串口:lsdev-C ... [详细]
  • Spring Boot基础教程 ( 五 ) :构建 RESTful API 与单元测试
    首先,回顾并详细说明一下在下面我们尝试使用SpringMVC来实现一组对User对象操作的RESTf ... [详细]
  • 前端库Bootstrap框架:「11]使用 span 创建行内元素
    前端库Bootstrap框架:「11]使用 span 创建行内元素 ... [详细]
  • 接口没获取到就被使用_如何使用 ThinkJS 优雅的编写 RESTful API
    RESTful是目前比较主流的一种用来设计和编排服务端API的一种规范。在RESTfulAPI中,所有的接口操作都被认为是对资源的CRUD,使用URI来 ... [详细]
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社区 版权所有