Processing math: 100%

YII2 控制器简述

控制器继承自yii\base\Controller类的对象,负责处理请求和生成响应,接收数据并传送到模型,传送模型结果到视图。

1. 操作

控制器由若干操作组成,是执行终端用户请求的最小单元。操作view,定义方法名为actionView()。

2. 路由

终端用户通过路由寻找到操作,路由是有包含控制器ID,操作ID。

3. 创建控制器

控制器 ID 应仅包含英文小写字母、数字、下划线、中横杠和正斜杠

控制器 Id 可包含子目录前缀,例如 admin/article 代表

控制器方法命名对大小写敏感。只有公有的方法才能被内联操作解析,

在不同地方重用相同的操作, 或者你想重新分配一个操作,需要考虑定义它为独立操作

独立操作
独立操作通过继承[[yii\base\Action]]或它的子类来定义,并实现公有的名称为 run()的方法

要使用独立操作,需要通过控制器中覆盖yii\base\Controller::actions()

1
2
3
4
5
6
7
8
9
10
11
12
public function actions()
{
    return [
        // 用类来申明"error" 操作
        'error' => 'yii\web\ErrorAction',
        // 用配置数组申明 "view" 操作
        'view' => [
            'class' => 'yii\web\ViewAction',
            'viewPrefix' => '',
        ],
    ];
}

操作参数

内联操作的操作方法和独立操作的 run() 方法可以带参数,称为操作参数。 参数值从请求中获取

public function actionView(id,version = null)

http://hostname/index.php?r=post/view&id=123: id123version 仍为 null 空
因为没有 version 请求参数;


•http://hostname/index.php?r=post/view&id=123&version=2: idversion 分别填
入 '123' 和 '2'`


•http://hostname/index.php?r=post/view: 会抛出[[yii\web\BadRequestHttpException]] 异
常 因为请求没有提供参数给必须赋值参数$id

•http://hostname/index.php?r=post/view&id[]=123: 会抛出
[[yii\web\BadRequestHttpException]] 异常 因为$id 参数收到数字值 ['123']而不是字符串.

如果想让操作参数接收数组值,需要指定idarraypublicfunctionactionView(arrayid, $version = null)

默认操作

在控制器中覆盖定义

public $defaultAction = 'home';

posted @   sundong_wyz  阅读(437)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示