在yii2中调用控制器的每个动作中的函数?

时间:2017-08-28 12:24:51

标签: php yii2

我想在执行操作代码之前在每个操作中调用一个公共函数

示例

using System;
using System.Collections;
using System.Collections.Generic;
using TinCan;
namespace UnityTinCan
{
    public class TinCanController
    {
        public RemoteLRS LRS = new RemoteLRS(
            LRSConfig.host,
            LRSConfig.username,
            LRSConfig.password
        );
    }
}

所以在这种情况下,我希望应用程序首先打印"内部通用功能"之后"内部行动执行"。

3 个答案:

答案 0 :(得分:1)

你可以使用beforeAction

它将在控制器

中的任何函数之前执行

这是一个示例

  public function beforeAction($action) {
    $this->abrech_model = new Abrechnung;
    if (!parent::beforeAction($action)) {
        return false;
    }
    $this->_session = Yii::$app->session;
    $this->view->params['langfile'] = 'de';
    $this->layout = "template";
    return true;
  }

答案 1 :(得分:0)

您可以使用beforeAction()函数并返回一个数组,您需要在顶部声明一个公共数组变量,并在beforeAction()函数内分配此数组中的值。现在,您可以将此公共数组变量用于任何操作。 在这里,我正在编写您的控制器代码:

<?php
namespace backend\controllers;

use Yii;
use yii\web\Controller;



class SiteController extends Controller
{


    public $arrData=[];


    public function actionIndex()
    {
      print_r($arrData); // use array here
      return $this->render('index');
    }

    public function beforeAction($action)
    {
      $arrData=[0,1,2,3]; // do here your stuffs 
      return $arrData;
    }


 } 

答案 2 :(得分:-1)

在main.php文件中写下该功能代码,并为每个动作执行该功能