2017-08-28 22 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; 
    } 


} 
相關問題