需知
因为Yaf的默认Module是Index,浏览器访问http://127.0.0.1/passport/login
,其实就是请求了Index模块
下的Passport控制器
下的loginAction方法
。
至于原因,如下:
默认情况下,我们的路由器是
Yaf_Router
, 而默认使用的路由协议是Yaf_Route_Static
。
默认的路由协议
Yaf_Route_Static
, 就是分析请求中的request_uri, 在去除掉base_uri以后, 获取到真正的负载路由信息的request_uri片段, 具体的策略是, 根据"/"对request_uri分段, 依次得到Module,Controller,Action, 在得到Module以后, 还需要根据Yaf_Application::$modules来判断Module是否是合法的Module, 如果不是, 则认为Module并没有体现在request_uri中, 而把原Module当做Controller, 原Controller当做Action。
在目录application\controllers\
下定义的控制器,都属于Index模块下的。
安装
新建模块
在目录application\
下新建目录modules
。除了默认模块,其他模块都放在application\modules\
下。
新建一个模块,模块名自定义。假设我的新模块叫Api
吧。
创建目录application\modules\Api
。
修改项目配置文件conf\application.ini
:
ini
; 多个模块,使用逗号分隔 application.modules = "Index,Api"
在新模块下创建控制器
在目录application\modules\Api\
下创建控制器目录controllers
,用于存放模块Api
下的控制器文件。
新建文件application\modules\Api\controllers\Passport.php
:
php
<?php class PassportController extends Yaf_Controller_Abstract { public function loginAction() { echo '我是登录接口'; return false; } }
效果
浏览器访问:http://127.0.0.1/api/passport/login
输出:我是登录接口
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。