Yii控制器基本的执行单位为action,通常情况下,在Controller类中定义一个actionMe的函数,那么当访问me这个action时(参考Yii分析5:路由管理类UrlManager和Yii分析7:runController的执行),会自动执行actionMe方法。在实际的项目中,如果Controller有多个action,那么如果把所有的action处理逻辑都写在Controller中,那么这个Controller类会异常的大,不利于后期维护,我们可以通过覆盖actions方法,配置action map把不通action分散到各个类中去处理:
public function actions(){
return array(
‘action1’=>array(
‘class’=>’path.to.actionclass1’,
‘property’=>’’,
),
‘action2’=>array(
‘class’=>’path.to.actionclass2’,
‘property’=>’’,
),
);
}
定义了上述配置数组之后,对于一个名为’deal’的action,Controller会首先去找是否有actionDeal这个方法,如果没有再去判断actions返回值数组是否有key为deal的值,进而用配置的类来处理,这个action类至少要有一个run方法(不一定要继承CAction类),来执行相应的处理逻辑,否则会报fatal error。
虽然这个action类只要有run方法就可以,不一定要继承CAction类,但是还是推荐大家使用CAction类,一方面保持框架的完整性,一方面不能访问调用他的Controller。CAction的代码很简单:
//这是一个抽象类
abstract class CAction extends CComponent implements IAction
{
private $_id;
private $_controller;
/**
* 构造函数,用于父类创建action类,同时将controler作为参数保存在成员中
* @param CController $controller the controller who owns this action.
* @param string $id id of the action.
*/
public function __construct($controller,$id)
{
$this->_controller=$controller;
$this->_id=$id;
}
/**
* @return CController 返回拥有这个action的controller
*/
public function getController()
{
return $this->_controller;
}
/**
* @return 返回action的id
*/
public function getId()
{
return $this->_id;
}
}
分享到:
相关推荐
yii-进程锁 防止脚本的多个副本同时运行。 使用 composer.json依赖项: " happyproff/yii-processlock " : " * " 注册应用程序组件: 'components' => [ . . . , 'processLock' => [ 'class' => '...
yii2elfinder 感谢: : 感谢:zybodya 提供当前 yii 版本 yii2elfinder 介绍:旧版本无法使用,因为它完全不适用于最新的jquery版本!... 之后将以下功能添加到您的控制器中 public function actions ()
集成控制器
Yii护照 安装 :light_bulb: 这是展示如何安装软件包的好地方,请参见下文: 跑步 $ composer require inquid/yii-passport 用法 :light_bulb: 这是显示一些用法示例的好地方! 变更日志 请看看 。 贡献 请看看 。...
Yii-QA简介(此项目目前已不再维护)感谢选择Yii-QA,基于框架基础实现的问答程序。 #意识到目前的急性时间有限,无法管理太多的额外项目,我准备合并现有手上的项目,集成在一个项目中,感谢支持!!!!!!!请关注:...
yii-simplepie yii-simplepie 是用于解析 rss 提要的 yii 扩展: 简单派: simplepie 文档: 用法 在 yii 中安装扩展 下载所有文件并放入 yii 扩展文件夹,然后在 config/main.php 中添加以下代码 'simplepie' ...
这个扩展是惊人的 jquery 滑块“sly”的包装器,可以在这里找到: 请。 仔细查看所有插件选项,可以通过将它们添加到“clientOptions”参数来传递这些选项,如下所示。 可以在此处找到扩展的演示: 安装 将此添加...
用于与支付的 api 配合使用的 Yii 组件 安装 从这个 github 存储库下载 yii-robokassa: cd protected/components git clone https://github.com/ladamalina/yii-robokassa.git 在 protected/config/main.php 中...
Yii 框架的 CKEditor 小部件 简单的 Yii CKEditor 小部件。 CKEditor - 每个人的 WYSIWYG 编辑器。 小部件生成具有相同属性的 CHtml::activeTextArea。 使用 CKEditor 4+ 版本测试。 安装 将此小部件复制到扩展...
yii2-swoole 为赋予 Yii2 框架协程异步能力而生。 后期开发会依赖 去实现功能,相信 Swoft 会是下一代优秀的框架。 此插件基于 swoole (v2.0) 底层实现的协程,改造 Yii2 的核心代码,使开发者无感知,以及在不改动...
yii-seo Yii PHP 框架的搜索引擎优化。 用法 布局中 <?php Yii::app()->controller->widget( 'vendor.crisu83.yii-seo.widgets.SeoHead', array( 'httpEquivs' => array( 'Content-Type' => 'text/html; ...
主要介绍了yii2控制器Controller Ajax操作方法,结合实例形式分析了Yii控制器调用ajax的相关技巧,需要的朋友可以参考下
yii框架源码分析
Yii 1 流日志 将 Yii 1 日志发送到 stdout/stderr - 创建用于与提供的 php-fpm/nginx Docker 堆栈一起使用 感谢 Haensel 为! 安装 通过作曲家安装: composer require neam/yii-streamlog:* 或者下载扩展,将src...
Yii框架演示项目 [Yii Framework]是一个现代框架,旨在为您PHP应用程序奠定坚实的基础。 它旨在显示和测试所有Yii功能。 安装 您至少需要PHP 7.4。 克隆此存储库。 在项目根目录中运行composer update 。 运行./...
Arshaw 的 FullCalendar jQuery 插件的 Yii 扩展 作者:Alexey Samoylov ( )。 要求 PHP 5.4 Yii 1.x 例子 全局组件配置示例: 'components' => [ 'fullcalendar' => [ 'class' => 'ext.yii-fullcalendar....
yii2-schemadump 从现有数据库生成模式。演示版要求PHP 7.3或更高版本Yii 2.x安装composer require --dev jamband/yii2-schemadump用法在config / console.php中添加以下内容: return [ . . . 'components' => [ . ...
利用navicat等工具连接到本地mysql数据库,创建数据库basic, utf8 -- UTF-8 Unicode集选择utf8 -- UTF-8 Unicode ,排序规则选择utf8_general_ci 。然后导入basic.sql文件。 测试url 安装成功 你好,世界 路由控制 ...
yii2fullcalendar JQuery Fullcalendar Yii2扩展JQuery来自: ://arshaw.com/fullcalendar/版本4.0.2许可证MIT jQuery文档: //arshaw.com/fullcalendar/docs/ Yii2扩展,通过 可以在这里找到一个小样本:http: ...