2017-08-28 106 views
1

我想打电话给在每一个动作一个共同的功能被执行之前的动作代码在yii2中的每个控制器动作中调用一个函数?

class SiteController extends Controller 
{ 

public function actionTest(TestFunction1){ 
     echo "Inside Action To execute" 
} 

private function TestFunction1(){ 
    echo "Inside Common Function" 
} 

} 

因此,在这种情况下,我希望应用程序先打印“内部常用函数”并在此之后“内部行动执行”。

+0

yii2具有运行之前运行的功能。 [beforeAction()](http://www.yiiframework.com/doc-2.0/yii-base-controller.html#beforeAction()-detail) – ArtOsi

回答

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; 
    } 
+0

你好,我知道beforeAction,但我想返回一个数组函数,并检查该函数中的一些东西,我该怎么做? –

+0

1.您可以在'beforeAction()'函数中编写代码,就像您在任何其他控制器函数中编写代码一样,因此您可以检查一些内容并返回一个数组。 2.第二种方法是创建一个带控制器的BaseController扩展,并在其中编写所需的函数,并将所有控制器扩展为BaseController,并且您可以在从baseController扩展的所有控制器中找到该方法。 –

+0

创建你的功能,并做你想做的事情,然后在之前调用它,$ this-> myfunc或者它是如何的 –

-1

写main.php文件的功能代码并执行该功能对每个动作

+0

你有没有可以共享的任何工作示例代码? –

+0

你有没有可以共享的任何工作示例代码? –

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; 
    } 


} 
相关问题