最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

yii框架怎么定义路由

来源:动视网 责编:小采 时间:2020-11-03 18:23:13
文档

yii框架怎么定义路由

yii框架怎么定义路由:路由和URL生成当一个YII应用开始处理一个请求的时候,它首先要做的便是将请求的URL转化成一个路由。路由的作用是用于后续实例化相应的控制器和操作,以便处理请求,整个处理过程便叫做路由。 (推荐学习:yii框架)路由的逆过程叫做URL生成,是指用给定的路由
推荐度:
导读yii框架怎么定义路由:路由和URL生成当一个YII应用开始处理一个请求的时候,它首先要做的便是将请求的URL转化成一个路由。路由的作用是用于后续实例化相应的控制器和操作,以便处理请求,整个处理过程便叫做路由。 (推荐学习:yii框架)路由的逆过程叫做URL生成,是指用给定的路由


路由和URL生成

当一个YII应用开始处理一个请求的时候,它首先要做的便是将请求的URL转化成一个路由。路由的作用是用于后续实例化相应的控制器和操作,以便处理请求,整个处理过程便叫做路由。 (推荐学习:yii框架)

路由的逆过程叫做URL生成,是指用给定的路由和参数信息来生成一个URL。当使用生成的URL来发出请求的时候,路由处理的过程又能够再次将其解析还原出原始的路由和参数信息。

主要负责路由和URL生成工作的是URL管理器,其被注册成为应用组件。URL管理器提供方法parseRequest()来解析请求,解析出其中的路由和参数信息。

而方法 createUrl() 用于将给定的路由和参数信息,生成一个URL。通过在应用配置中配置URL管理器,可以让你的应用能够识别任意的URL格式,而不用修改已有程序代码。例如,你能使用如下的代码来生成一个URL。

use yiihelpersUrl;
// Url::to() calls UrlManager::createUrl() to create a URL
$url = Url::to(['post/view', 'id' => 100]);

取决于URL管理器的配置,如上代码生成的URL的样子看上去像下面这样的。假如这个URL后续被请求的话,它将被解析成上面的原始路由和参数信息。

/index.php?r=post/view&id=100
/index.php/post/100
/posts/100

URL格式

URL管理器支持两种URL格式:默认URL格式和漂亮URL格式。默认URL格式使用一个查询参数r传递路由,其他参数按照正常方式放在URL中。

例如,URL /index.php?r=post/view&id=100 的路由为post/view和参数id为100。默认URL格式并不要求对URL管理器做任何配置。

漂亮URL格式是使用额外的路径跟在入口脚本名之后,来展现路由和相关参数的。

例如,URL /index.php/post/100的额外路径为/post/100,其展现出的路由为post/view和参数id为100。

如果要使用这种URL格式,你需要根据实际需求,设计一个URL规则集。你可以通过修改URL管理器中属性enablePrettyUrl的值,来达到在这两种URL格式之间切换的目的。

路由

路由的工作可以分为两步:

1.从请求中解析出一个路由和相关参数;

2.根据路由生成响应的控制器操作,来处理该请求。

当使用默认URL格式的时候,解析出路由很简单,只要获取参数r的值便可;

当使用漂亮URL格式的时候,URL管理器会检测URL规则集,从中找出与该请求匹配的路由。如果找不到规则与之匹配,将会抛出异常yiiwebNotFoundHttpException。

一旦从请求中解析出路由,接下来要做的就是创建与该路由相关的控制器操作。路由被斜线切割成几个部分,例如,site/index会被切割成site和index。

每个部分都是一个ID,它们也许指向模块、控制器或操作。从路由的第一个部分开始,应该会执行如下几步来创建模块(如果有的话)、控制器和操作:

1.设置应用主体为当前模块。

2.检查当前模块的 yiiaseModule::controllerMap 是否包含当前ID。如果是,会根据该表中的配置创建一个控制器对象,然后跳到步骤五执行该路由的后续片段。

3.检查该 ID 是否指向当前模块中 yiiaseModule::modules 属性里的模块列表中的一个模块。如果是,会根据该模块表中的配置创建一个模块对象,然后会以新创建的模块为环境,跳回步骤二解析下一段路由。

4.将该 ID 视为控制器 ID,并创建控制器对象。用下个步骤解析路由里剩下的片段。

5.控制器会在他的 yiiaseController::actions()里搜索当前 ID。如果找得到,它会根据该映射表中的配置创建一个操作对象;反之,控制器则会尝试创建一个与该 ID 相对应,由某个 action 方法所定义的行内操作(inline action)。

上面这些步骤中,如果有任何错误发生,应用都会抛出异常yiiwebNotFoundHttpException,意味着路由处理失败。

文档

yii框架怎么定义路由

yii框架怎么定义路由:路由和URL生成当一个YII应用开始处理一个请求的时候,它首先要做的便是将请求的URL转化成一个路由。路由的作用是用于后续实例化相应的控制器和操作,以便处理请求,整个处理过程便叫做路由。 (推荐学习:yii框架)路由的逆过程叫做URL生成,是指用给定的路由
推荐度:
标签: 路由 Yii yii框架
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top