本文概述
操作在控制器文件中定义。通过URL在应用程序中执行请求时, 需要调用它们。
创造行动
通过定义名称以action开头的公共方法来创建操作。
例:
步骤1我们将在SampleController.php文件中创建一个名为index2的操作。
<?php
namespace frontend\controllers;
use Yii;
use yii\web\Controller;
class SampleController extends Controller
{
public function actionIndex()
{
return $this->render('index');
}
public function actionIndex2()
{
return "<h1>This action is Index2</h2>";
}
}
?>
步骤2在浏览器上运行它。
http://localhost/action/frontend/web/index.php?r = sample / index2
动作ID
创建动作来执行特定请求, 因此通常将其命名为动词, 例如创建, 查看, 更新, 删除等。
动作ID只能包含以下字母:
- 小写英文字母
- 下划线
- 连字号
- 英文字母后的数字, 例如上例中的index2。
可以通过两种方式创建动作:
- 内联动作
- 独立动作
内联动作
内联动作是控制器类中的一种方法。这些是不需要多次使用且易于创建的最常用操作。
内联操作ID名称是根据以下几点定义的:
- 以操作前缀开始方法名称。
- 操作后单词的首字母将大写。
- 删除连字符。
例如,
- 索引2成为actionIndex2
- 登录表单变为actionLoginForm
独立动作
独立动作扩展了yii \ base \ Action或其子类。这些动作主要是在需要在不同的控制器中使用或作为扩展重新分配时创建的。
可以将它们定义为单独的类, 然后将它们连接到控制器。这样, 他们将能够重用。
这些动作必须实现一个名为run()的方法, 并扩展到yii \ base \ Action或子类。
例子
我们将演示独立动作的简单用法。
步骤1在Yii2文件夹的前端目录中创建一个文件夹。
步骤2现在在上面创建的文件夹中创建MultiAction.php文件。
<?php
namespace frontend\standing;
use yii\base\Action;
class MultiAction extends Action {
public function run() {
return "<h3>This is StandAlone action example</h3>";
}
}
?>
看上面的代码, 我们创建了一个名为MultiAction的独立动作, 该动作扩展到Action类。已经实现了run()方法。
步骤3在上面创建的SampleController.php文件中, 添加一些额外的代码。
<?php
namespace frontend\controllers;
use Yii;
use yii\web\Controller;
class SampleController extends Controller
{
public function actionIndex()
{
return $this->render('index');
}
public function actions()
{
return [
'multi' => 'frontend\standing\MultiAction', ];
}
public function actionIndex2()
{
return "<h1>This action is Index2</h2>";
}
}
?>
看上面的代码, actions()方法返回独立动作, 它是在常设文件夹中创建的多动作。
步骤4在带有URL的浏览器中运行它,
http://localhost/action/frontend/web/index.php?r = sample / multi
动作返回值
一个动作的返回值代表相应动作的结果。
以下示例显示了通过返回响应对象将操作重定向到新URL的操作。 redirect()方法始终返回一个响应对象。
步骤1在SampleController.php文件中添加以下代码。
public function actionMysite()
{
// redirect the user browser to http://example.com
return $this->redirect('http://srcmini02.com');
}
步骤2在浏览器中使用以下URL运行它,
http://localhost/action/frontend/web/index.php?r = sample / mysite
上面的URL将使srcmini02.com站点出现在你的面前。
动作参数
你还可以将参数添加到操作方法。它们的值将使用参数名作为键从$ _GET方法中检索。
步骤1在SampleController.php文件中添加以下代码。
public function actionPara($a, $b)
{
return "$a $b";
}
步骤2在浏览器中使用以下URL运行它,
http://localhost/action/frontend/web/index.php?r = sample / para&a =欢迎来到&b =我们的网站
在上述网址中, 如果你不向a和b变量提供任何值, 则将引发异常错误。
默认动作
始终在每个控制器文件中指定默认操作。默认情况下, 它设置为索引。
在路由中时, URL仅包含控制器ID, 然后转到默认操作index。但是, 可以通过覆盖默认值来更改它。
命名空间app \ controllers;
使用yii \ web \ Controller;
class SiteController extends Controller
{
public $defaultAction = 'main_page';
public function actionHome()
{
return $this->render('main_page');
}
}
下载此示例