yii框架网址解析问题

首先如果你在config/main.php里面没有配置urlManager的话,那么流程如下(摘自yii官网)
用户发出了访问 URL http://www.example.com/index.php?r=post/show&id=1 的请求,Web 服务器通过执行入口脚本index.php 处理此请求。
入口脚本创建了一个 应用 实例并执行。
应用从一个叫做 request 的 应用组件中获得了用户请求的详细信息。
应用在一个名叫 urlManager 的应用组件的帮助下,决定请求的 控制器和 动作 。在这个例子中,控制器是 post,它代表 PostController 类;动作是 show ,其实际含义由控制器决定。
应用创建了一个所请求控制器的实例以进一步处理用户请求。控制器决定了动作show 指向控制器类中的一个名为 actionShow 的方法。然后它创建并持行了与动作关联的过滤器(例如访问控制,基准测试)。如果过滤器允许,动作将被执行。
动作从数据库中读取一个 ID 为 1 的 Post 模型。
动作通过 Post 模型渲染一个名为 show 的 视图。
视图读取并显示 Post 模型的属性。
视图执行一些 小物件。
视图的渲染结果被插入一个 布局。
动作完成视图渲染并将其呈现给用户。
但是如果你已经配置了urlManager如下:
'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                '<controller:\w+>/<id:\d+>'=>'<controller>/index',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
            ),
        ),
那么直接访问http://www.example.com/index.php?r=post/show&id=1就不可能得到show action的结果了。首先这个请求会交给defaultController的indexAction处理,defaultController在main.php里制定,如果defaultController不是PostControler,你可能就会莫名其妙了。如果正好是的话,则会返回indexAction的内容,而不是showAction。
其实要访问这个也很简单,http://www.example.com/index.php/post/show?id=1就行了
因为urlManager已经设置成按照<controller>/<action>的形式
 

时间: 2024-11-29 15:22:08

yii框架网址解析问题的相关文章

解析PHP的Yii框架中cookie和session功能的相关操作_php技巧

Sessions 和 请求 和 响应类似, 默认可通过为yii\web\Session 实例的session 应用组件 来访问sessions. 开启和关闭 Sessions 可使用以下代码来开启和关闭session. $session = Yii::$app->session; // 检查session是否开启 if ($session->isActive) ... // 开启session $session->open(); // 关闭session $session->clo

深入解析PHP的Yii框架中的缓存功能_php技巧

数据缓存是指将一些 PHP 变量存储到缓存中,使用时再从缓存中取回.它也是更高级缓存特性的基础,例如查询缓存和内容缓存. 如下代码是一个典型的数据缓存使用模式.其中 $cache 指向缓存组件: // 尝试从缓存中取回 $data $data = $cache->get($key); if ($data === false) { // $data 在缓存中没有找到,则重新计算它的值 // 将 $data 存放到缓存供下次使用 $cache->set($key, $data); } // 这儿

Yii框架中sphinx索引配置方法解析_php实例

本文实例讲述了Yii框架中sphinx索引配置方法.分享给大家供大家参考,具体如下: 请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库 #源定义 source mysql { type = mysql sql_host = localhost sql_user = root sql_pass = root sql_db = yii2 sql_port = 3306 sql_query_pre = SET NAMES utf8 sql_query

Yii框架中sphinx索引配置方法解析

本文实例讲述了Yii框架中sphinx索引配置方法.分享给大家供大家参考,具体如下: 请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库 #源定义 source mysql { type = mysql sql_host = localhost sql_user = root sql_pass = root sql_db = yii2 sql_port = 3306 sql_query_pre = SET NAMES utf8 sql_query

Yii 框架学习--02 进阶

应用结构 入口文件 文件位置: web/index.php <?php //开启debug,应用会保留更多日志信息,如果抛出异常,会显示详细的错误调用堆栈 defined('YII_DEBUG') or define('YII_DEBUG', true); //环境定义 defined('YII_ENV') or define('YII_ENV', 'dev'); //dev,prod // 注册 Composer 自动加载器 require(__DIR__ . '/../vendor/auto

PHP的Yii框架入门使用教程_php实例

安装 Yii 的安装由如下两步组成: 从 yiiframework.com 下载 Yii 框架. 将 Yii 压缩包解压至一个 Web 可访问的目录. Tip|提示: 安装在 Web 目录不是必须的,每个 Yii 应用都有一个入口脚本,只有它才必须暴露给 Web 用户.其它 PHP 脚本(包括 Yii)应该保护起来不被 Web 访问,因为它们可能会被黑客利用.需求 安装完 Yii 以后你也许想验证一下你的服务器是否满足使用 Yii 的要求,只需浏览器中输入如下网址来访问需求检测脚本: http:

详解PHP的Yii框架的运行机制及其路由功能_php技巧

运行机制概述每一次 Yii 应用开始处理 HTTP 请求时,它都会进行一个近似的流程. 用户提交指向 入口脚本 web/index.php 的请求. 入口脚本会加载 配置数组 并创建一个 应用 实例用于处理该请求. 应用会通过 request(请求) 应用组件解析被请求的 路由. 应用创建一个 controller(控制器) 实例具体处理请求. 控制器会创建一个 action(动作) 实例并为该动作执行相关的 Filters(访问过滤器). 如果任何一个过滤器验证失败,该动作会被取消. 如果全部

PHP Yii框架之表单验证规则大全_php实例

Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用.Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程. 废话不多说了,直接给大家贴代码了. <?php class ContactForm extends CFormModel { public $_id; public $contact;//联系人 public $tel;//电话 public $fax;//传真 public $zipcode;//邮编 public $addr;//地址 public $mobile;

解读PHP的Yii框架中请求与响应的处理流程_php技巧

一.请求(Requests)请求: 一个应用的请求是用 yii\web\Request 对象来表示的,该对象提供了诸如 请求参数(译者注:通常是GET参数或者POST参数).HTTP头.cookies等信息. 默认情况下,对于一个给定的请求,你可以通过 request application component 应用组件(yii\web\Request 类的实例) 获得访问相应的请求对象.在本章节,我们将介绍怎样在你的应用中使用这个组件. 1.请求参数 要获取请求参数,你可以调用 request