0

Yii フレームワークに問題があります。siteController に属する layout/main.php ページでコントローラーのアクションを呼び出したいのですが、次のようにしました。

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

次に、このエラーが発生しました:

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

どうすればこの問題を解決できますか?


さて、ウィジェットを作成したいのですが、私が行った手順は次のとおりです。

  • フォルダー「保護」にフォルダー「ウィジェット」を作成しました。
  • フォルダー「widgets」にフォルダー「views」を作成しました。
  • これを config/main.php に追加しました:'application.widgets.*'
  • これは widgets/Alert.php のコードです:

    クラス AlertWidget extends CWidget { public $alert = 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]);
    }
    

    }

  • これは widgets/views/alert.php のコードです:

    エコー $data;

  • これは、ビューでウィジェットを使用する方法のコードです。

    $this->widget('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
4

1 に答える 1

1

最初の質問について: メソッド actionRequestAlert() を static として定義する必要があります

public static actionRequestAlert() {}
于 2013-10-22T09:25:52.100 に答える