[actions] -- actions详细使用

news/2024/2/29 2:19:38

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://www.ppmy.cn/news/395153.html

相关文章

ActionForward

ActionForward是做什么的?他是 用来封装转发路径的。 在struts- config.xml中<forward name="error" path="/login.jsp"></forward> 默 认的是安转发处理,转发的特点:是使用同一个 request,而重定向的url地址会改变,而转发的url地址是不…

ActionScript 介绍

ActionScript是Flash的脚本语言。正是由于Flash中增加、完善 了ActionScript&#xff0c;才能创作出来的动画具有很强的交互性。在简单的动画中&#xff0c;Flash按顺序播放动画中的场景和帧&#xff0c;而在交互动画中&#xff0c;用户可以使 用键盘或鼠标与动画交互&#xff…

Github 之 action

jar包是打好了&#xff0c;但是你需要登录远程服务器&#xff0c;上传&#xff0c;运行jar包&#xff0c;这操作很费劲&#xff0c;你能不能一个脚本执行&#xff1f; 例如除了sharesoft&#xff0c;还有别的网站(例如coder coop)&#xff0c;都是一样的操作&#xff0c;怎么办…

Action与Func

Action 和 Func都是C#系统中内置的委托类型。 Action Action Action<T> Action<T1, T2> Action<T1, ... T16>这其中 T表示的是方法参数&#xff0c;Action中最多可有16个方法参数 Action 首先不带任何参数的,需要一个返回值为void类型&#xff0c;无参数…

「SQL面试题库」 No_98 活动参与者

&#x1f345; 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起&#xff0c;全员免费参与的SQL学习活动。我每天发布1道SQL面试真题&#xff0c;从简单到困难&#xff0c;涵盖所有SQL知识点&#xff0c;我敢保证只要做完这100道题&#xff0c;不仅能轻松搞定面试&#xff0…

云计算openstack——云计算、大数据、人工智能(16)

一、互联网行业及云计算 在互联网时代&#xff0c;技术是推动社会发展的驱动&#xff0c;云计算则是一个包罗万象的技术栈集合&#xff0c;通过网络提供IAAS、PAAS、SAAS等资源&#xff0c;涵盖从数据中心底层的硬件设置到最上层客户的应用。给我们工作生活提供服务&#xff01…

转: 云计算openstack—云计算、大数据、人工智能

原文: https://www.cnblogs.com/cloudhere/p/10768850.html 一、互联网行业及云计算 在互联网时代&#xff0c;技术是推动社会发展的驱动&#xff0c;云计算则是一个包罗万象的技术栈集合&#xff0c;通过网络提供IAAS、PAAS、SAAS等资源&#xff0c;涵盖从数据中心底层的硬件…

mysql 鼠标右键无法使用_笔记本电脑鼠标右键无反应怎么办

点击开始按钮&#xff0c;输入【regedit】确定&#xff0c;点击regedit.exe打开注册表编辑器。 按照以下路径展开注册表&#xff1a; HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer。 首先找到HKEY_CURRENT_USER双击展开&#xff0c;找到Sof…

笔记本linux鼠标动不了怎么办,为什么笔记本鼠标动不了_笔记本电脑鼠标不动了怎么办-win7之家...

作为笔记本电脑中的主要操作设备&#xff0c;鼠标的作用可谓是重中之重&#xff0c;许多用户由于使用不习惯触摸板&#xff0c;因此就会给自己的笔记电脑外接一个鼠标&#xff0c;然而对于连接完鼠标的笔记本在操作的时候却出现不能动的情况&#xff0c;那么为什么笔记本鼠标动…

锁定计算机后点鼠标屏幕无反应,电脑鼠标点桌面没反应怎么办

在有些时候我们的电脑鼠标点桌面没反应了&#xff0c;这该怎么办呢?那么下面就由小编来给你们说说电脑鼠标点桌面没反应的解决方法吧&#xff0c;希望可以帮到你们哦! 电脑鼠标点桌面没反应的解决方法一&#xff1a; 首先按着CtrlshiftEsc,调出人物管理器&#xff0c;在进程里…

计算机无法 鼠标没反应,笔记本电脑鼠标动不了怎么办(鼠标没反应怎么解决)...

笔记本电脑鼠标动不了怎么办(鼠标没反应怎么解决)鼠标和键盘一样&#xff0c;是辅助我们进行电脑操作的设备&#xff0c;使用没有鼠标的笔记本需要很长时间适应&#xff0c;使用鼠标比较方便&#xff0c;为笔记本配置了一个鼠标&#xff0c;但是比起台式机的鼠标&#xff0c;笔…

计算机无法 鼠标没反应,鼠标插电脑上没反应怎么回事_鼠标连接电脑没反应的解决步骤...

鼠标在使用过程中&#xff0c;总是会遇到形形色色的问题&#xff0c;比如有用户经常反映说鼠标插电脑上没反应&#xff0c;鼠标灯虽然亮了但是光标是无法移动的&#xff0c;碰上这样的问题是怎么会是回事呢&#xff0c;排除鼠标本身的问题&#xff0c;可能是系统原因&#xff0…

首次使用计算机 鼠标没反应,鼠标没反应各种解决方法教程

我们在使用鼠标的时候开始肯定没问题&#xff0c;但长期使用下来&#xff0c;总会出现一种故障&#xff0c;比如最常见的鼠标没反应的问题&#xff0c;也就是说不管你怎么滑动鼠标&#xff0c;显示器里的光标都不动了&#xff0c;这种问题怎么解决呢&#xff1f;我们要分成有线…

如何彻底解决Acer笔记本电脑触控板没反应的故障

对于我们日常所使用的笔记本电脑来说&#xff0c;与台式电脑不同&#xff0c;除了可以用鼠标操作之外&#xff0c;还可以使用笔记本电脑自带的触摸板来操作。不过&#xff0c;笔记本电脑的触摸板也是会出现一些问题的&#xff0c;就拿Acer笔记本来说吧&#xff0c;Acer笔记本触…

锁定计算机后点鼠标屏幕无反应,电脑鼠标点击桌面没有反应怎么办

有win7的小伙伴反应&#xff0c;鼠标右键点击桌面&#xff0c;却没反应&#xff0c;怎么办?下面是学习啦小编为大家介绍电脑鼠标点击桌面没有反应的解决方法,欢迎大家阅读。 电脑鼠标点击桌面没有反应的解决方法 解决Windows7系统&#xff0c;用鼠标右键点击计算机桌面&#x…

计算机鼠标双击怎么,电脑鼠标双击没反应怎么办

在有些时候我们的电脑鼠标双击没反应了&#xff0c;这该怎么办呢?那么下面就由小编来给你们说说电脑鼠标双击没反应的原因及解决方法吧&#xff0c;希望可以帮到你们哦! 电脑鼠标双击没反应的解决方法一&#xff1a; 1.如果各分区下带autorun.inf一类的隐藏文件&#xff0c;删…

无线鼠标没反应怎么办

无线鼠标没反应,相信目前使用无线鼠标的同学或多或少都遇到过,随着一体机电脑,笔记本电脑等的流行以及无线鼠标价格持续走低,越来越多朋友选择使用简洁的无线鼠标,然而使用无线鼠标也会出现这样或那样的问题,今天来讲一下关于常见的无线鼠标无反应的解决办法。 找出老鼠…

首次使用计算机 鼠标没反应,电脑鼠标没反应是怎么回事

如果鼠标仍然没有响应&#xff0c;请检查以下几个方便。 1.检查鼠标底部的指示灯是否闪烁。如果它不闪亮&#xff0c;这意味着鼠标没有正确插入或鼠标坏了。 在这种情况下&#xff0c;你可以先检查鼠标插入是否正确&#xff0c;检查没有错误&#xff0c;仍然不亮&#xff0c;基…

Spring的依赖注入(DI)是什么,有哪些实现方式?

Spring的依赖注入&#xff08;DI&#xff09;是什么&#xff0c;有哪些实现方式&#xff1f; Spring的依赖注入&#xff08;Dependency Injection&#xff09;是一种设计模式&#xff0c;也是一种编程模式。它的主要思想是将对象的依赖关系从对象本身解耦&#xff0c;从而降低…
最新文章