2013-10-09 3 views
0

Я хочу создать виджет, вот шаги, которые я сделал:как сделать виджет в Yii

  • создана папка widgets в папке protected.
  • создана папка views в папке widgets.
  • добавили это в config/main.php: 'application.widgets.*'
  • это код widgets/Alert.php:
class 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:
echo $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 
+2

Вы должны назвать файлы такими же, как имена классов. Вы имели в виду 'class Alert extends CWidget'? –

+0

да, спасибо :) – Mohammad

ответ

2

, если вы собираетесь получить доступ виджет с использованием $this->widget('application.widgets.Alert');, тогда имя класса виджетов должно быть Alert (например: public class Alert extends CWidget...), и имя файла должно оставаться Alert.php

Смежные вопросы