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: id会填入′123′,version 仍为 null 空
因为没有 version 请求参数;
•http://hostname/index.php?r=post/view&id=123&version=2: id和version 分别填
入 '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']而不是字符串.
如果想让操作参数接收数组值,需要指定id为array,如下所示:publicfunctionactionView(arrayid, $version = null)
默认操作
在控制器中覆盖定义
public $defaultAction = 'home';
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 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 构建精确任务处理应用