2013-10-09 57 views
0

我在Yii框架的一個問題,我想打電話給控制器的佈局/ main.php頁這是屬於siteController動作,我這樣做:呼叫控制器在另一個控制器動作,使部件

$a = UsersController::actionRequestAlert($s); 

然後我得到這個錯誤:

Non-static method UsersController::actionRequestAlert() should not be called statically, assuming $this from incompatible context 

所以我怎麼能解決這個問題?


OK, 現在我想創建一個小部件,這裏是我做的步驟:在文件夾

  • 創建的文件夾「小部件」「保護」。
  • 在文件夾「窗口小部件」中創建了文件夾「視圖」。 'application.widgets.*'
  • 這是窗口小部件的代碼/ Alert.php:

  • 在配置/ main.php加入此

    類AlertWidget延伸CWidget { 公共$警報= NULL;

    private $_data = null; 
    
    public function init() 
    { 
        $s = Yii::app()->session['userId']; 
        $r = Requests::model()->findAll('idUser='.$s.' and confirm =0 and unconfirm=0 and cancel=0'); 
        $i=0; 
        foreach($r as $x) 
         $i++; 
         if($i<=0) 
          $alert=null; 
         else 
          $alert="(".$i.")"; 
        $this->_data = new CActiveDataProvider($alert); 
    } 
    
    public function run() 
    { 
        $this->render('alert', ['data' => $this->_data]); 
    } 
    

    }

  • 這是窗口小部件/視圖/ alert.php的代碼:

    回波$數據;

  • 這是代碼對如何使用窗口小部件在一個視圖中:

    $這 - >部件( 'application.widgets.Alert');

最後我得到了這些錯誤:

(!) SCREAM: Error suppression ignored for 
(!) Fatal error: Cannot redeclare class AlertWidget in C:\wamp\www\mediastore\protected\widgets\Alert.php on line 27 
+1

http://stackoverflow.com/questions/ 10766608 /調用函數從佈局視圖文件在yii – redGREENblue

+0

在siteController中創建一個方法,它調用userController方法。不要稱之爲靜態(意味着,使用關鍵字「新」的對象) – mondjunge

+4

views不要調用動作,動作渲染視圖! – Sidux

回答

1

關於第一個問題: 你必須定義方法actionRequestAlert()靜態

public static actionRequestAlert() {}