5

Q : グリッドビューのフィルターを作成する方法は?

ステータス: 顧客名 = first_name . 苗字

これは私のグリッドビューです

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'customer-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        array(
              'header'=>'Customer Name',
              'name'=>'$data->first_name',
              'value'=>'$data->first_name.\' \'.$data->last_name',
              ),        
        'company_name',
        'country',
        'state',
        'city',     
        'address1',         
        'phone1',       
        'email',        
        array('name' => 'company_id',
               'value'=>'$data->companies->name',
               'filter'=>CHtml::listData($records, 'id', 'name'),
        ),
        array(
            'class'=>'CButtonColumn',
        ),
    ),
)); ?>
4

2 に答える 2

12

モデルで変数を作成する

class Customer extends CActiveRecord
{
    public $customer_name;
    public function search()
    {            
        $criteria->compare('CONCAT(first_name, \' \', last_name)',$this->customer_name,true);            
    }
}

見えている

<?php $this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'customer-grid',
        'dataProvider'=>$model->search(),
        'filter'=>$model,
        'columns'=>array(
            array(           
                'name'=>'customer_name',
                'value'=>'ucwords($data->first_name.\' \'.$data->last_name)',
                  ),        
            'company_name',
            'country',
            'state',
            'city', 
            'address1',
            'phone1',
            'email',
            array(
                'class'=>'CButtonColumn',
            ),
        ),
    )); ?>

また、モデルの rules() メソッドで新しい属性を「安全」と宣言することを忘れないでください。そうしないと、入力が考慮されません。

public function rules()
{
    return array(
    /* ... */
        array('customer_name', 'safe', 'on'=>'search'),
    );
}
于 2012-08-08T04:54:02.253 に答える
4

最初の変更:

'name'=>'$data->first_name',

に:

'name'=>'first_name',

モデルのsearchメソッドでは、条件を追加する必要がありLIKEます:

$model->addSearchCondition( 'CONCAT( first_name, " ", last_name )', $this->first_name );
于 2012-08-07T12:58:41.770 に答える