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

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






推荐阅读
  • yii2 绑定框架事件
    后端开发|php教程php,yii2后端开发-php教程我想要添加自定义代码处理yii2框架的Application::EVENT_BEFORE_REQUEST时触发的事件,但是不 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • python oj刷题网站_中小学计算机竞赛去哪里刷题?橙旭园OJ系统上线啦!
    原标题:中小学计算机竞赛去哪里刷题?橙旭园OJ系统上线啦!相信许多人在学习完编程之后都会茫然,感觉自己无所不能࿰ ... [详细]
  • 使用这个技巧要达到的目标:一般来说,模型和控制器你都不会有相同的类名字。让我先创建一个取名为post的model。classPostextendsModel{}现在 ... [详细]
  • Yii framwork 应用小窍门
    Yiiframework应用小窍门1.YiiFramework]如何获取当前controller的名称?下面语句就可以获取当前控制器的名称了!Php代码 ... [详细]
  • clickhouse 二(springboot+mybatis配置clickhouse,实现插入查询)
    原标题:clickhouse二(springboot+mybatis配置clickhouse,实现插入查询)开发步骤 ... [详细]
  • 本文为Codeforces 1294A题目的解析,主要讨论了Collecting Coins整除+不整除问题。文章详细介绍了题目的背景和要求,并给出了解题思路和代码实现。同时提供了在线测评地址和相关参考链接。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 解决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,以便查看详细日志信息。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
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社区 版权所有