Я довольно новичок в Yii, и мне нужно создать таблицу, которая отображает все узлы (серверы) из моей компании.
Я использовал Gii для генерации большей части данных и настроил CGridView по своему вкусу. Я довольно смущен, пытаясь захватить логическое значение из каждого узла, чтобы определить, должно ли отображаться изображение «status_ON» или «status_OFF» в их соответствующей строке.
Как я могу его закодировать, чтобы изображение было изменено на основе результата «isOnline» из базы данных, который возвращает 0 (офлайн) или 1 (онлайн) без необходимости javascript / ajax или аналогичного?
Имейте в виду, что я вынужден использовать Yii v1.1.8.r3324
Надеюсь, я спросил это правильно!
<?php class Nodes extends CActiveRecord { /** * Retrieves a list of models based on the current search/filter conditions. * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions. */ public function search() { // Warning: Please modify the following code to remove attributes that // should not be searched. $criteria=new CDbCriteria; $criteria->compare('id',$this->id); $criteria->compare('name',$this->name,true); $criteria->compare('url',$this->url,true); $criteria->compare('description',$this->description,true); $criteria->compare('node_type',$this->node_type,true); $criteria->compare('last_bounced',$this->last_bounced,true); $criteria->compare('isonline',$this->isonline); return new CActiveDataProvider($this, array( 'pagination'=>array( 'pageSize'=>Yii::app()->user->getState('pageSize',Yii::app()->params['defaultPageSize']), ), 'criteria'=>$criteria, )); } // ... }
<?php class NodeBouncerController extends Controller { /** * Lists all models. */ public function actionIndex() { $model= new Nodes('search'); $model->unsetAttributes(); // clear any default values if(isset($_GET['pageSize'])){ Yii::app()->user->setState('pageSize',(int)$_GET['pageSize']); unset($_GET['pageSize']); } if(isset($_GET['Nodes'])) $model->attributes=$_GET['Nodes']; return $this->render('index',array('model'=>$model,)); } //... }
с<?php class NodeBouncerController extends Controller { /** * Lists all models. */ public function actionIndex() { $model= new Nodes('search'); $model->unsetAttributes(); // clear any default values if(isset($_GET['pageSize'])){ Yii::app()->user->setState('pageSize',(int)$_GET['pageSize']); unset($_GET['pageSize']); } if(isset($_GET['Nodes'])) $model->attributes=$_GET['Nodes']; return $this->render('index',array('model'=>$model,)); } //... }
<!-- node table --> <?php /* statusON/OFF_image variable used to change which image is displayed */ $statusON_image = 'CHtml::image("/images/abs/ButtonON.png")'; $statusOFF_image = 'CHtml::image("/images/abs/ButtonOFF.png")'; $pageSize = Yii::app()->user->getState('pageSize', Yii::app()->params['defaultPageSize']); $this->widget('zii.widgets.grid.CGridView', array( 'id' => 'nodes-grid', 'dataProvider' => $model->search(), 'filter' => $model, 'columns' => array( array('class' => 'CCheckBoxColumn'), /* 'id', */ 'name', 'url', 'description', 'node_type', 'last_bounced', array( 'name' => 'isonline', 'header' => CHtml::dropDownList('pageSize', $pageSize, array(10 => 10, 20 => 20, 50 => 50, 100 => 100), array( 'onchange' => "$.fn.yiiGridView.update('nodes-grid',{ data:{pageSize: $(this).val() }})",)), 'type' => 'raw', 'sortable'=>false, 'value' => $statusOFF_image, 'htmlOptions' => array('id' => 'NB_status'), 'filter' => '', ), ) ) ); ?> <!-- node table END -->