I can not operate the filter class to TbGridView relationship!
<?php
/**
* This is the model class for table "artigo".
*
* The followings are the available columns in table 'artigo':
* @property integer $idArtigo
* @property integer $idArea
* @property string $titulo
* @property string $conteudo
* @property string $imagem
* @property integer $ordem
* @property string $ativo
* @property string $datacriacao
* @property string $dataedicao
*
* The followings are the available model relations:
* @property Area $idArea0
* @property Box[] $boxes
*/
class Artigo extends CActiveRecord
{
/**
* Admin variables (ycm module)
*/
public $adminNames=array('Artigos','Artigo','Artigoss'); // admin interface, singular, plural
/**
* @return string the associated database table name
*/
public function tableName()
{
return 'artigo';
}
/**
* @return array validation rules for model attributes.
*/
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
//array('idArea, titulo, conteudo, imagem, ordem', 'required'),
array('titulo, conteudo, ordem', 'required'),
array('idArea, ordem', 'numerical', 'integerOnly'=>true),
array('titulo, imagem', 'length', 'max'=>255),
array('ativo', 'length', 'max'=>4),
array('datacriacao, dataedicao', 'safe'),
// The following rule is used by search().
// @todo Please remove those attributes that should not be searched.
array('idArtigo, idArea, titulo, conteudo, imagem, ordem, ativo, datacriacao, dataedicao', 'safe', 'on'=>'search'),
);
}
/**
* @return array relational rules.
*/
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
//'idArea0' => array(self::BELONGS_TO, 'Area', 'idArea'),
'area' => array(self::BELONGS_TO, 'Area', 'idArea'),
'boxes' => array(self::HAS_MANY, 'Box', 'idArtigo'),
);
}
/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels()
{
return array(
'idArtigo' => 'Id',
'idArea' => 'Area',
'titulo' => 'Título',
'conteudo' => 'Conteúdo',
'imagem' => 'Imagem',
'ordem' => 'Ordem',
'ativo' => 'Ativo',
'datacriacao' => 'Data de Criação',
'dataedicao' => 'Data de Edição',
);
}
/**
* Retrieves a list of models based on the current search/filter conditions.
*
* Typical usecase:
* - Initialize the model fields with values from filter form.
* - Execute this method to get CActiveDataProvider instance which will filter
* models according to data in model fields.
* - Pass data provider to CGridView, CListView or any similar widget.
*
* @return CActiveDataProvider the data provider that can return the models
* based on the search/filter conditions.
*/
public function search()
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('idArtigo',$this->idArtigo);
$criteria->compare('idArea',$this->idArea);
$criteria->compare('titulo',$this->titulo,true);
$criteria->compare('conteudo',$this->conteudo,true);
$criteria->compare('imagem',$this->imagem,true);
$criteria->compare('ordem',$this->ordem);
$criteria->compare('ativo',$this->ativo,true);
$criteria->compare('datacriacao',$this->datacriacao,true);
$criteria->compare('dataedicao',$this->dataedicao,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
/**
* Returns the static model of the specified AR class.
* Please note that you should have this exact method in all your CActiveRecord descendants!
* @param string $className active record class name.
* @return Artigo the static model class
*/
public static function model($className=__CLASS__)
{
return parent::model($className);
}
/**
* Config for attribute widgets (ycm module)
*
* @return array
*/
public function attributeWidgets()
{
return array(
array('idArtigo','textField'),
array('idArea','chosen'),
array('titulo','titulo'),
array('conteudo','wysiwyg'),
array('imagem','image'),
array('ordem','textField'),
/*array('ativo','chosen'),
array('datacriacao','datetime'),
array('dataedicao','datetime'),*/
);
}
/**
* Select choices for field3 (ycm module)
*
* @return array
*/
public function idAreaChoices()
{
return CHtml::listData(Area::model()->findAll(), 'idArea', 'nome');
}
/**
* Config for TbGridView class (ycm module)
*
* @return array
*/
public function adminSearch()
{
return array(
'columns'=>array(
'idArtigo',
//'idArea',
array(
'header'=>'idArea',
//'filter'=>CHtml::activeTextField($this->area, 'nome', $htmlOptions=array( )),
//'filter'=>CHtml::activeInputField('text', $data->area, $data->area->nome, $htmlOptions=array( )),
//'filter'=>CHtml::textField('Artigo[area->nome]','', $htmlOptions=array( )),
//'filter'=> CHtml::listData(Area::model()->findAll(), 'idArea', 'nome'),
//'filter'=>CHtml::inputField( 'text', $data, $data->area->nome, $htmlOptions=array( )),
'filter'=>CHtml::dropDownList('Sessão', '', $this->idAreaChoices(),$htmlOptions=array( )),
//'type'=>'html',
//'value'=>'CHtml::link($data->area->nome, $url="index.php?r=ycm/model/update&name=Area&pk=$data->idArea", $htmlOptions=array( ))'
'value'=>'($data->area) ? $data->area->nome : "Nenhuma Area"'
),
'titulo',
'conteudo',
/*array(
'name'=>'ativo',
'value'=>'$data->ativo==1 ? CHtml::encode("Yes") : CHtml::encode("No")',
'filter'=>array(1=>'Yes',0=>'No'),
),*/
array(
'header'=>'Imagem',
'filter'=>'',
'type'=>'html',
'value'=>'(!empty($data->imagem))?CHtml::image(Yii::app()->assetManager->publish("uploads/artigo/imagem/$data->imagem"),"",array("class"=>"thumbnail image")):"sem imagem"'
),
'ordem',
/*array(
'name' => 'datacriacao',
'value' => 'date("d.m.Y H:i:s",strtotime($data->datacriacao))',
),*/
/*array(
'name' => 'dataedicao',
'value' => 'date("d.m.Y H:i:s",strtotime($data->dataedicao))',
),*/
),
);
}
}