3

私は yii-booster(4.0.1) TbGridView(CGridView を拡張) を使用しており、フィルター関数の _REQUEST($_POST, $_GET) でフィルター変数名を変更する必要があります。私のグリッドにはフィルター機能があり、フィルター入力にいくつかの単語を入力した後にEnterキーを押すと、サーバーにajaxリクエストが送信されます。$_REQUEST のこのリクエストでは、次のものがあります。

array
(
    'page' => '1'
    'wsi_it_model_Asset' => array
    (
        'user' => 'eghlima'
        'createdAt' => ''
        'serial' => ''
        'brand' => ''
        'model' => ''
        'assetType' => ''
        'assigned' => ''
        'location' => ''
        'status' => ''
    )
)

私の質問は、CGridView によって作成されたリクエストでwsi_it_model_Assetを変更する方法です。dataProvider を作成しているときにCActiveDataProviderのパラメーターを介して行う必要があることはわかっていますが、それが見つかりません。

前もって感謝します。

UPDATE Jan 24 Jan 別のプロジェクトからコードを
見つけました。keysortpagination

return new \CActiveDataProvider($this->applicant, array(
            'criteria' => $criteria,
            'pagination' => array(
                'pageVar' => 'p', // <<<<< pagination var
                'pageSize' => 20,
            ),
            'sort' => array(
                'sortVar' => 's', // <<<<< sorting var
                'defaultOrder' => 't.firstName ASC',
                'attributes' => array(
                    '*'
                )

            ),
        ));

したがって、ページネーションの場合、クライアントからサーバーに投稿されるリクエストは次のようになります。

array
(
    'p' => '7' // <<<<<< page changed to `p`
    'wsi_it_model_Asset' => array
    (
        'user' => 'eghlima'
        'createdAt' => ''
        'serial' => ''
        'brand' => ''
        'model' => ''
        'assetType' => ''
        'assigned' => ''
        'location' => ''
        'status' => ''
    )
)
4

1 に答える 1

0

何を言っているのかよくわかりませんが、試してみてください。

$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'my-grid',
    'dataProvider' => $model->search(),
    'filter' => $model,
    'columns' => array(
        array(
            'value' => '$data->theValue',
            'filter' => CHtml::activeTextField($model, 'myWish'),
        ),
    )
));

そして、モデルに仮想属性を追加します

public function getMyWish()
   {
      return 'Your dream answere';
   }

$model->search() に次を追加します。

$criteria->compare('$data->theValue', $this->myWish,true);

このようなものは、仮想属性に関する非常に優れたチュートリアルをチェックします: http://www.yiiframework.com/wiki/167/understanding-virtual-attributes-and-get-set-methods/

于 2016-01-08T19:55:06.360 に答える