Yii-使用动作

要在控制器类中创建动作,您应该定义一个公共方法,该方法的名称以单词action开头。动作的返回数据表示要发送给最终用户的响应。

步骤1-让我们在ExampleController中定义hello-world动作。

<?php 
   namespace app\controllers; 
   use yii\web\Controller; 
   class ExampleController extends Controller { 
      public function actionIndex() { 
         $message = "index action of the ExampleController"; 
         return $this->render("example",[ 
            'message' => $message 
         ]); 
      } 
      public function actionHelloWorld() { 
         return "Hello world!"; 
      } 
   } 
?>

第2步-类型的http://本地主机:8080 / index.php的R =例如/你好世界?在Web浏览器的地址栏中。您将看到以下内容。

Yii-使用动作

动作ID通常是动词,例如create,update,delete等。这是因为操作通常被设计为在资源上执行特定的更改。

操作ID仅应包含以下字符-小写英文字母,数字,连字符和下划线。

有两种类型的操作:内联操作和独立操作。

内联动作在控制器类中定义。操作名称是通过以下方式从操作ID派生的:

  • 将操作ID的所有单词的第一个字母大写。
  • 删除连字符。
  • 添加操作前缀。

示例

  • 索引变为actionIndex。
  • hello-world(如上例所示)成为actionHelloWorld。

如果计划在不同位置重用同一动作,则应将其定义为独立动作。

创建一个独立的动作类

要创建独立的动作类,应扩展yii \ base \ Action或子类,并实现run()方法。

步骤1-在项目根目录内创建一个components文件夹。在该文件夹内,使用以下代码创建一个名为GreetingAction.php的文件。

<?php 
   namespace app\components;
   use yii\base\Action;
   class GreetingAction extends Action {
      public function run() {
         return "Greeting";
      }
   }
?>

我们刚刚创建了可重用的操作。要在ExampleController中使用它,我们应该通过重写actions()方法在动作图中声明我们的动作。

步骤2-以这种方式修改ExampleController.php文件。

<?php
   namespace app\controllers;
   use yii\web\Controller;
   class ExampleController extends Controller {
      public function actions() {
         return [
            'greeting' => 'app\components\GreetingAction',
         ];
      }
      public function actionIndex() {
         $message = "index action of the ExampleController";
         
         return $this->render("example",[
            'message' => $message
         ]);
      }
      public function actionHelloWorld() {
         return "Hello world!";
      }
   }
?>

动作()方法返回的数组,其值是类名和键动作ID。

步骤3-转到http:// localhost:8080 / index.php?r = example / greeting。您将看到以下输出。

Yii-使用动作

步骤4-您还可以使用操作将用户重定向到其他URL。将以下操作添加到ExampleController.php

public function actionOpenGoogle() {
   // redirect the user browser to http://google.com
   return $this->redirect('http://google.com');
} 

现在,如果您打开http:// localhost:8080 / index.php?r = example / open-google,则会将您重定向到http://google.com

动作方法可以采用称为动作参数的参数。使用参数名称作为键从$ _GET中检索它们的值。

步骤5-将以下操作添加到示例控制器。

public function actionTestParams($first, $second) {
   return "$first $second";
}

步骤6-在Web浏览器的地址栏中输入URL http:// localhost:8080 / index.php?r = example / testparams&first = hello&second = world,您将看到以下输出。

Yii-使用动作

每个控制器都有一个默认操作。当路由仅包含控制器ID时,表示请求了默认操作。默认情况下,操作是index。您可以在控制器中轻松覆盖此属性。

第7步这种方式修改我们的ExampleController

<?php
   namespace app\controllers;
   use yii\web\Controller;
   class ExampleController extends Controller {
      public $defaultAction = "hello-world";
      /* other actions */
   }
?>

步骤8-现在,如果您转到http:// localhost:8080 / index.php?r = example,您将看到以下内容。

Yii-使用动作

为了满足请求,控制器将经历以下生命周期-

  • 调用yii \ base \ Controller:init()方法。
  • 控制器根据操作ID创建操作。
  • 控制器顺序调用Web应用程序,模块和控制器的beforeAction()方法。
  • 控制器运行动作。
  • 控制器顺序调用Web应用程序,模块和控制器的afterAction()方法。
  • 应用程序将动作结果分配给响应。

重要事项

管制员应-

  • 非常瘦。每个动作应仅包含几行代码。
  • 使用视图进行响应。
  • 未嵌入HTML。
  • 访问请求数据。
  • 模型的调用方法。
  • 不处理请求数据。这些应该在模型中进行处理。

作者:terry,如若转载,请注明出处:https://www.web176.com/yii/587.html

(0)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2020年10月26日 下午5:28
下一篇 2020年10月26日 下午5:32

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注