[actions] -- actions详细使用
YII2框架开发程序时,很多时候会遇到一些功能大致相同的方法,这时候,可以选择把这些方法统一写到外部以方便管理。
例如在yii2的演示包里siteController.php文件中就有一段:
public function actions(){return ['error' => ['class' => 'yii\web\ErrorAction',],//返回错误'captcha' => ['class' => 'yii\captcha\CaptchaAction','fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,],//返回验证];}
在这段程序里,分别用到了error和captcha两个外部action,分别用来回显错误和校验图形验证码。我们可以在vendor/yiisoft/yii2里找到对应的程序文件。
类似的,Yii2共提供了如下action:
InlineAction
CaptchaAction
CreateAction
DeleteAction
IndexAction
OptionsAction
UpdateAction
ViewAction
ErrorAction
GenerateAction
仿造这些文件,我们也可以编写自己的外部action。
第一步:找到frontend/libs文件夹,新建 文件TestAction.php
自写义的外部action,可以放到任意位置,作为示例,我把它放到网站的frontend/libs里面。
第二步:在文件TestAction.php中输入代码:
仿照已有的action文件,在新建的TestAction.php文件中写入如下内容:
<?php
namespace frontend\libs;
use yii\base\Action;
class TestAction extends Action {public function run() {return $this->controller->render('test');}
}
第三步:在SiteController里调用testAction:
修改SiteController的function actions,加上以下代码中的高亮部分:
public function actions(){return ['error' => ['class' => 'yii\web\ErrorAction',],//返回错误'captcha' => ['class' => 'yii\captcha\CaptchaAction','fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,],//返回验证'test'=>['class'=>'frontend\libs\TestAction',]];}
第四步:在views/site下添加test.php视图文件
在TestAction中我们调用了视图,所以,需要添加相应的视图文件。如果在多个不同的controller中用到TestAction,那么,可以为每个controller配置不同的视图。
view/test.php
<h1>TestAction</h1>
<p>这是TestAction演示页面!</p>
第五步:现在,TestAction已经完成了,我们可以输入网址预览一下:
接下来,我们可以试试为testAction添加参数:
第六步:修改TestAction.php,添加待输入的三个参数:
<?php
namespace frontend\libs;
use yii\base\Action;
class TestAction extends Action {public $param1=NULL;public $param2=NULL;public function run($get=NULL) {return $this->controller->render('test',['get'=>$get,'param1'=>$this->param1,'param2'=>$this->param2]);}
}
这段代码中需要配置三个参数,$get、$param1、$param2,其中$get是在url中传递的,例如按照我电脑上的配置,访问http://127.0.0.8/index.php?r=site%2Ftest&get=xxx,就会为$get赋值xxx。而$param1和$param2则是在controller中设置的。
第七步:修改SiteController的function actions,为$param1和$param2赋值
public function actions(){return ['error' => ['class' => 'yii\web\ErrorAction',],'captcha' => ['class' => 'yii\captcha\CaptchaAction','fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,],'test'=>['class'=>'frontend\libs\TestAction','param1'=>'参数一','param2'=>'参数二',]];}
这样,$param1和$param2参数就传递过去了。
最后,配置视图views/site/test.php完成测试:
<h1>TestAction</h1>
<p>这是TestAction演示页面!</p>
<p>$get="<?=$get?>"</p>
<p>$param1="<?=$param1?>"</p>
<p>$param2="<?=$param2?>"</p>
按各人本地路径访问网址如:http://127.0.0.8/index.php?r=site%2Ftest&get=xxx
可看到显示结果
[actions] -- actions详细使用相关推荐
- delegate IDE build/run actions actions to Maven
使用idea2020后,运行maven项目,main方法运行不起来,报错:xxx.xxx包不存在,xxx.xxx找不到,实则相关的包都是存在的,并且可以打包成功.也就是说,可以打包成功但是idea不能 ...
- Github Actions:再次改变软件开发
本文转自 FEPulse 公众号(微信搜索 FEPulse,精选国内外最新前端资讯,为你把握前端脉搏). Github Actions 是 GitHub Universe 大会上发布的,被 Githu ...
- GitHub Actions 支持 skip ci 了
GitHub Actions 支持 "skip ci" 了 Intro GitHub Actions 作为 GitHub 官方的 CI 支持,很多开源项目已经在使用 Actions ...
- awk学习笔记八-Actions
原文: http://doc.lazyhack.net/awk.htm Actions Actions 是由下列指令(statement)所组成 : 表达式 ( function calls, ass ...
- Pinia学习笔记之--核心概念Actions
Actions Actions相当于组件中的方法.他们可以被定义在defineStore()的actions属性下,它们非常适合定义业务逻辑. export const useStore = defi ...
- Selenium(一)12.Actions的常用方法
1.鼠标悬停 一般有一些下拉菜单需要鼠标放在下拉箭头才会出现,这个时候就需要鼠标悬停的操作进行下一步操作 应用: package com.ming.Selenium.Actions;import or ...
- pinia 的使用(三)—— actions
文章目录 1.状态操作 actions ① 状态更新 ② 重置状态 $reset ③ 跨容器调用 ④ actions 的操作 ⑤ 注意点 1.状态操作 actions actions 可以通过完全输入 ...
- 几分钟搞懂Vuex(State,Mutations,Actions)
文章目录 State Getters Mutation Actions 这是Vuex官方给出的图片,看起来有点不好理解,上详解!!!! 开始介绍之前,我们需要将Vuex挂载到Vue实例上面,这样我们才 ...
- Vuex的作用、使用、核心概念(State、Mutations、Getters、Actions、Modules)、文件抽离
vue入门–基础命令+axios+案例练习 vue入门–vue常用属性.生命周期.计算属性.过滤器.组件.虚拟DOM.数组的响应式方法.页面闪烁.ES6简单语法增强 vue入门–js高阶函数(箭头函数 ...
最新文章
- “我的开源项目被威胁了!”
- 信号处理之filter去噪
- Tomat6架构探讨(二续)
- 充分发挥bpl包的作用
- linux vim分屏:水平和垂直分屏
- 2. Using 'dp' instead of 'px' to set text size
- Distributed System: Lamport clock vs Vector clock | 分布式系统:Lamport clock 和 Vector clock 详解
- Angular Service依赖注入的一个具体例子
- android 图片传递,如何使用包在Android活动之间传递图像(位图)?
- 涉密文件检查工具_深圳龙华资料文件销毁粉碎销毁资料文件公司一览表
- 网页打印物理大小尺寸的单位换算
- C# WinFrom 用Execl做模版进行数据导入简介
- java captcha 验证码_java生成图片验证码的示例代码
- 小米6Android11刷机包,小米6刷机包MIUI12
- leetcode 买卖股票的最佳时机含手续费(Java)
- 基于PCA算法生成平均脸
- Linux 多点电容触摸屏实验(1)
- 同时掌握96门语言,取得多项世界突破,百度发布预训练模型ERNIE-M
- MAC 无法重启或关机
- Python直男作死篇:生日蛋糕小游戏