yii2怎么隐藏域名中的yii2 跨控制器调用名

Yii2中如何访问controller的二级目录下的控制器以及访问
Yii2默认的控制器下只有一层目录放在controller目录下,当开发的需要的时候需要在该目录下面新增一层目录也就是在controller下增加二级目录,比如controller/api/MemberController.php,访问的时候直接 /api/member/ 即可。这样方面管理和代码模块化的整洁。
例如需要在默认的controllers目录下面新建一个api的目录,这个时候api里面放置和api相关的控制器。
创建好的目录结构如下图:
MemberController.php的代码如下:
//注意此处的命名空间有\api (关键关键关键)
namespace app\controllers\
use yii\web\C
//位于API目录下面的Member控制器
class MemberController extends Controller{
public function actionIndex(){
echo 'This is member index';
public function actionTest(){
echo 'TTTTTTTTTTTTTTT';
public function actionHello(){
return 'Hello World!!!';
对于需要渲染相应的视图层,也请到views下面对应的建立视图层即可。
还有另外一种办法就是modules的方法,例如后台admin部分就可以建立一个module方便整合管理。
yii1中也是类似。只是yii2中多了命名空间。需要特别指出(见代码处)。
跌倒和爬起是成功回首时最美的一道风景线!!!
备案/许可证编号为:滇ICP备号 CopyRightyii2中控制器中怎么调用模型_百度知道Yii框架之控制器controller使用基础教程_知行网
Yii框架之控制器controller使用基础教程
控制器(Controller)
控制器 是 CController 类的子类的实例。它在当用户请求时由应用创建。当一个控制器运行时,它执行所请求的动作(控制器类方法),动作通常会引入所必要的模型并渲染相应的视图。 动作,就是一个名字以 action 开头的控制器类方法(action+大写首字母的动作名)。
控制器类文件保存位置protected/controllers/
控制器和动作以 ID 识别。
控制器ID 是一种 '父目录/子目录/控制器名' 的格式,对应相应的控制器类文件 protected/controllers/父目录/子目录/大写首字母的控制器名Controller.php;
动作ID 是除去 action 前缀的动作方法名。
用户以路由的形式请求特定的控制器和动作。路由是由控制器 ID 和动作 ID 连接起来的,两者以斜线分割。
例如,路由 post/edit 代表 PostController 及其 edit 动作。默认情况下,URL http://hostname/index.php?r=post/edit 即请求此控制器和动作。
注意: 默认情况下,路由是大小写敏感的。可以通过设置应用配置中的 CUrlManager::caseSensitive 为 false 使路由对大小写不敏感。当在大小写不敏感模式中时, 要确保你遵循了相应的规则约定,即:包含控制器类文件的目录名小写,且 控制器映射 和 动作映射 中的键为小写。
路由的格式:控制器ID/动作ID 或 模块ID/控制器ID/动作ID(如果是嵌套模块,模块ID 就是 父模块ID/子模块ID)
2、控制器实例化
应用将使用如下规则确定控制器的类以及类文件的位置:
a、如果指定了 CWebApplication::catchAllRequest , 控制器将基于此属性创建,而用户指定的控制器 ID 将被忽略。这通常用于将应用设置为维护状态并显示一个静态提示页面。
b、如果在 CWebApplication::controllerMap 中找到了 ID, 相应的控制器配置将被用于创建控制器实例。
c、如果 ID 为 'path/to/xyz'的格式,控制器类的名字将判断为 XyzController,相应的类文件则为 protected/controllers/path/to/XyzController.php。如果类文件不存在,将触发一个 404 CHttpException 异常。
在使用了模块的情况下,应用将检查此 ID 是否代表一个模块中的控制器。如果是的话,模块实例将被首先创建,然后创建模块中的控制器实例。
3、动作(action)
动作 就是被定义为一个以 action 单词作为前缀命名的方法。而更高级的方式是定义一个动作类并让控制器在收到请求时将其实例化。这使得动作可以被复用,提高了可复用度。
a、定义一个动作类,基本格式如下:
class UpdateAction extends CAction
public function run()
// place the action logic here
b、使用动作类:为了让控制器注意到这个动作,我们要用如下方式覆盖控制器类的actions() 方法:
class PostController extends CController
public function actions()
return array(
'edit'=&'application.controllers.post.UpdateAction', //使用&应用程序文件夹/controllers/post/UpdateAction.php&文件中的类来处理edit动作
如上所示,我们使用了路径别名&application.controllers.post.UpdateAction&指定动作类文件为&protected/controllers/post/UpdateAction.php&。
通过编写基于类的动作,我们可以将应用组织为模块的风格。例如,如下目录结构可用于组织控制器相关代码:
protected/
controllers/
PostController.php
UserController.php
CreateAction.php
ReadAction.php
UpdateAction.php
CreateAction.php
ListAction.php
ProfileAction.php
UpdateAction.php
标签(Tag):
------分隔线----------------------------
------分隔线----------------------------Yii2 获取模块名、控制器名、方法名在视图中:&& & 模块名 &$this-&context-&module-&id& & 控制器名 $this-&context-&id& & 方法名 $this-&context-&action-&id在控制器中& &&&模块名 & Yii::$app-&controller-&module-&& & &控制器名 &&Yii::$app-&controller-&id& & &方法名 &Yii::$app-&controller-&action-&&或& &&模块名 $this-&module-&& &&控制器名 $this-&& &&&方法名 &$this-&action-&在控制器的 beforeAction 方法中(方法接收$action参数)& & 模块名 &$action-&controller-&module-&& &&控制器名 $action-&controller-&& &&方法名 &$action-&
以上就介绍了Yii2 获取模块名、控制器名、方法名,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
本文网址链接:/article/detail_307216.html
上一篇: 下一篇:Yii框架2.0(8)
$this-&context-&action-&id
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:11091次
排名:千里之外
原创:18篇
转载:17篇
(1)(1)(1)(1)(6)(11)(6)(1)(4)(1)(4)

我要回帖

更多关于 yii2 视图调用控制器 的文章

 

随机推荐