[actions] -- actions详细使用

article/2025/8/22 4:20:55

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

可看到显示结果








http://chatgpt.dhexx.cn/article/2gybtiOF.shtml

相关文章

按钮权限配置方式

按钮权限&#xff0c;在页面权限之下&#xff0c;页面下勾选任意一个按钮&#xff0c;则默认也有查看功能 通过指令方式实现按钮权限控制 // 按钮使用方式 v-has:参数 值 参数可不要 app.directive(has, {// 因为是在beforeMount钩子里面做的所以&#xff0c;下面需要setTimeo…

Photoshop插件-动作相关概念-ActionList-ActionDescriptor-ActionList-动作执行加载调用删除-PS插件开发

文章目录 1.简介2.动作相关概念2.1.ActionDescriptor2.2.ActionList2.3.ActionReference 3.范例3.1.加载动作3.2.执行动作3.3.非加载执行动作文件中动作3.4.删除动作集3.5.删除动作 4.作者寄语 1.简介 PS动作是什么&#xff1f;是一组操作步骤的组合&#xff0c;多个步骤集合成…

Action的类型

A、使用普通的类 必须有public的execute且返回值为String的方法。 ActionType.java package com;public class ActionType_1 {public String execute(){System.out.println("我是Action类型1");return null;} } B、实现Actin接口 实现com.opensymphony.xwork2.Acti…

ListActivity

ListActivity ListActivity中比较复杂的部分就是配置其Adapter&#xff0c;Adapter常用的有ArrayAdapter和SimpleAdapter。 首先我们先看一下简单的ArrayAdapter&#xff1a;ListActivity不同于普通Activity的地方是该Activity里边有一个ListView&#xff0c;该ListView绑定了A…

JAVA:Timer+actionListener

Timer类 •类描述&#xff1a; –它是一个按预定频率触发ActionEvent事件的源组件&#xff0c;利用它可以实现动态效果。 •构造方法&#xff1a; –Timer( int delay, ActionListener actionListener&#xff08;绑定监听器&#xff0c;开始后自己不断调用监听器的actionp…

actions的使用详解

actions的使用详解 为何要有actions环节 我们之前学了vuex状态管理&#xff0c;组件可以引用state&#xff0c;但是不能直接修改state,比如发送操作到actions&#xff0c;在此执行异步操作&#xff0c;然后再提交mutation来修改state.如果没有异步操作可以直接提交到mutation…

idea插件Material Theme主题设置方法

首先&#xff1a;如果要设置下图这种&#xff1a; 1. 先下载插件 2. 设置主题 3. 设置代码界面主题 4. 下载 Atom Material Icons插件

idea工具推荐几款好用的代码theme主题颜色

先去这个主题网站选择自己喜欢的主题http://color-themes.com/?viewindex 我个人比较喜欢这几款&#xff0c;你们要是喜欢其他主题的可以选择别的 点击下面的下下载按钮 跳转页面后点击下载 然后在我们的idea编辑器器中导入主题jar包找到我们下载的jar包然后点击ok 然后点击E…

Material Theme 主题插件 - Sublime 插件

1. 安装 Material Theme 主题插件 Material Theme主题、配色方案所占的区域 2. Material Theme 配色方案&#xff08;右侧区域&#xff09; 查看可用的配色方案 可选配色方案&#xff08;个人推荐&#xff1a;Material-Theme-Darker&#xff09; Darker 配色方案效果

android_基础_常见主题theme风格详解

本文出自门心叼龙的博客&#xff0c;转载请注明出处&#xff1a; https://blog.csdn.net/geduo_83/article/details/86560896 目录 1. 什么是Style&#xff0c;什么是Theme&#xff1f; 2. 在定义Theme的时候符号和&#xff1f;符号有何区别&#xff1f; 3. 怎么通过代码给…

iview 实现在theme主题中添加某一个新模块的主题颜色切换

背景&#xff1a;直接下载的iview-admin 1.3.1模板 1、iview 自带主题theme 主要有4个颜色组成 分别为 默认的蓝色&#xff0c;其他分别为红色&#xff0c;蓝色&#xff0c;洋红色&#xff1b;然后在根据菜单栏是否为黑色和白色的组合状态所以有8中组合的主题&#xff1b; 2、…

Android——Theme和Style-由浅入深,全面讲解

1、官方详细解读 样式和主题背景 | Android 开发者 | Android Developers 2、应用场景 类似web设计中css样式。将应用设计的细节与界面的结构和行为分开。 样式style &#xff1a;应用于 单个 View 的外观。样式可以指定字体颜色、字号、背景颜色等属性 主题theme&…

关于eclipse IDE安装Darkest Dark Theme主题插件

听说Darkest Dark Theme是现在最受欢迎的eclipse主题插件&#xff0c;于是我也来搞了一下。 Darkest Dark Theme官方网站(打开慢的要死&#xff0c;不知道是不是只有我会有这个问题。) https://marketplace.eclipse.org/content/darkest-dark-theme安装教程&#xff1a; 1.打开…

Vue Theme主题样式整理

为什么80%的码农都做不了架构师&#xff1f;>>> 一、ElementUI官方主题在线生成预览 https://elementui.github.io/theme-chalk-preview/#/zh-CN 使用步骤&#xff1a; 1.选择主题颜色&#xff0c;下载主题 包&#xff0c;然后解压 2.找到node_modules下的element-u…

Android Theme 常见主题风格详解

本文为自己多年来在Android实战开发过程中总结归纳的一些常见问题&#xff0c;现在分享出来希望对初学者有所帮助。 本文出自门心叼龙的博客&#xff0c;转载请注明出处&#xff1a; https://blog.csdn.net/geduo_83/article/details/86560896 目录 1. 什么是Style&…

Android自带的Theme主题图解

一、Manifest文件中: 从上图中我们可以看到在这个应用程序中我们的主题应用的是 AppTheme ,然后我们去看看 AppTheme 。 二、style.xml文件中: 这个文件是在应用工程中的: 然后又可以发现 AppTheme 主题样式是继承自 AppBaseTheme 主题样式的, 而 AppBaseTheme 主题样式又…

OpenWRT LUCI Theme主题定制

本人所写的博客都为开发之中遇到问题记录的随笔,主要是给自己积累些问题。免日后无印象,如有不当之处敬请指正(欢迎进扣群 24849632 探讨问题); 我们在github上先找一个合适的主题 https://github.com/search?q=luci+theme 比如我们以 rosywrt/luci-theme-rosy 为例 第…

Android的Theme主题切换

简单的Theme换肤功能 效果截图 1、定义属性 先定义几个需要改变的属性&#xff0c;例如&#xff1a; <!--换肤--><attr name"userNameColor" format"color" /><attr name"commonColor" format"color" /><…

Eclipse设置Theme主题颜色

设置Eclipse的代码编辑区背景为暗黑色系&#xff1a; 如需转载&#xff0c;请注明转载自&#xff1a;blog.csdn.net/it1988888 相关文件下载&#xff1a;http://guari.github.io/eclipse-ui-theme/ 方案一--下载颜色主题配置文件&#xff0c;离线导入配色方案的设置&#xf…

Jupyter lab Theme 主题更换

Jupyter lab Theme 主题更换 1. 打开Jupyter-lab2. 再拓展插件中搜索 “theme”3. 安装自己喜欢的主题4. 在Setting->JupyterLab Theme->选择"自己刚安装的主题"jupyterlab_miami_nights 主题jupyterlab_onedarkpro 主题 1. 打开Jupyter-lab 2. 再拓展插件中搜…