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