2016-01-03 8 views
3

Я использую yii-booster (4.0.1) TbGridView (расширяет CGridView) и необходимо изменить имя переменной фильтра в _REQUEST ($ _ POST, $ _GET) для функции фильтра. В моей сетке у меня есть функция фильтрации, и когда я нажимаю клавишу ввода после ввода некоторых слов в вход фильтра, для сервера отправляется запрос ajax. в этом запросе в $ _REQUEST у меня есть:Yii1 CGridView (Yii-Booster): Как сменить ключ фильтра (filterVal) в TbGridView (на основе CGridView)?

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

Мой вопрос, как я могу изменить wsi_it_model_Asset в запросе созданного CGridView. Я знаю, что я должен сделать это через параметр в CActiveDataProvider, когда я создаю dataProvider, но я не могу его найти.

Заранее спасибо.

UPDATE 24 января
Я нашел свой код из другого проекта, как вы можете видеть, что я могу изменить key для sort и pagination, мне нужно что-то выглядеть для фильтрации ключа;

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' => '' 
    ) 
) 

ответ

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'; 
    } 

А в вашем $ модельно> поиск() добавить:

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

Что-то вроде этого проверить очень хорошо учебник по виртуальным атрибутам: http://www.yiiframework.com/wiki/167/understanding-virtual-attributes-and-get-set-methods/

+0

нет, это не ответ. посмотреть; Вы писали: 'filter' => CHtml :: activeTextField ($ model, 'myWish'), Когда вы используете модель в yii1, она использует имя класса для элемента, и в моем случае это Asset с пространством имен wsi \ it \ model, поэтому yii1 будет выбирать wsi_it_model_Asset как префикс для имени элемента и id, и всякий раз, когда он хочет отправить запрос, все параметры будут иметь это как префикс. , но я уверен, должно быть решение для изменения этой переменной! –