zoukankan      html  css  js  c++  java
  • YII2 控制器简述

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

    1. 操作

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

    2. 路由

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

    3. 创建控制器

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

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

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

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

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

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

    public function actions()
    {
        return [
            // 用类来申明"error" 操作
            'error' => 'yiiwebErrorAction',
            // 用配置数组申明 "view" 操作
            'view' => [
                'class' => 'yiiwebViewAction',
                '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: 会抛出[[yiiwebBadRequestHttpException]] 异
    常 因为请求没有提供参数给必须赋值参数$id

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

    如果想让操作参数接收数组值,需要指定$id 为 array,如下所示:
    public function actionView(array $id, $version = null)

    默认操作

    在控制器中覆盖定义

    public $defaultAction = 'home';

  • 相关阅读:
    ERP类系统设计学习
    人工智能关键词
    系统性能
    连接不同服务器不同数据库
    socket一个例子
    SQLite
    asp.net 页面缓存、数据缓存
    原生js
    Android 网络调试 adb tcpip 开启方法
    C语言中string char int类型转换
  • 原文地址:https://www.cnblogs.com/wyzs/p/5306732.html
Copyright © 2011-2022 走看看