WedX - журнал о программировании и компьютерных науках

Yii: фильтр с CActiveDataProvider в виде сетки дает ошибку

Я пытаюсь использовать фильтры в cGridview с cActiveDataProvider, но это дает следующее исключение

CActiveDataProvider и его поведение не имеют метода или замыкания с именем «getValidators».

Пожалуйста, проверьте следующий код

Контроллер

public function actionAdmin()
{
    $admin_type=Yii::app()->user->isAdmin;
    if($admin_type==1)
    {
        $admin_batches=WebHelper::getAllAdminBatchesInArray(Yii::app()->user->getId());
        if(!empty($admin_batches))
        {
            $batch_list=implode(",",$admin_batches);
        }
         $batch_criteria="group_id IN ( ".$batch_list." ) and status!=-1";
    }
    else
        $batch_criteria="1 and status!=-1";

     $model=new CActiveDataProvider('Users',array('criteria'=>array(
                'condition'=>$batch_criteria,
            )));
   // print_r($model);die;

    //$model->unsetAttributes();  // clear any default values
    if(isset($_GET['Users']))
        $model->attributes=$_GET['Users'];

    $this->render('admin',array(
        'model'=>$model,
    ));
}

Просмотреть

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'users-grid',
'dataProvider'=>$model,
'filter'=>$model,
'columns'=>array(
    array(
        'class'=>'CButtonColumn',
        'htmlOptions'=>array('width'=>'70px'),
        'buttons' => array(
                            'view' => array(
                                'imageUrl' => Yii::app()->baseUrl . '/themes/gamify/images/view-image.png'
                            ),
                            'update' => array(
                                'imageUrl' => Yii::app()->baseUrl . '/themes/gamify/images/Edit-icon.png'
                            ),
                            'delete' => array(
                                'imageUrl' => Yii::app()->baseUrl . '/themes/gamify/images/Delete-icon.png'
                            )
                        )
    ),
    first_name',
    'last_name',
    'user_name',
    'group.group_title',
    //'password',
    'email_id',
    array(
        'type'=>'raw',
        'name'=>'Status',
        'value'=>'($data->status==0)?"<a href=\'\' id=\'$data->user_id\' class=\'user_status Active\'>Active</a>":"<a href=\'\' id=\'$data->user_id\' class=\'user_status Inactive\'>Inactive</a>"'
    ),



),));?>
03.03.2015

Ответы:


1

Я создал новый проект yii и создал таблицу company в своей базе данных, затем я создал CRUD в gii для тестирования. Это структура по умолчанию для actionAdmin в каждом сгенерированном контроллере yii:

public function actionAdmin() {
   $model = new Company('search');
   $model->unsetAttributes();  // clear any default values
   if (isset($_POST['Company']))
     $model->attributes = $_POST['Company'];

     $this->render('admin', array(
        'model' => $model,
   ));
}

И в представлении по умолчанию admin для каждого сгенерированного CRUD yii передает $model в атрибут CGridView filter. Это означает, что фильтр CGridView принимает только объект модели, но вы передаете ему экземпляр CActiveDataProvider. Предположим, что $model является объектом модели (например, пользователи в вашем случае), вы должны передать $model в filter из CGridView и передать $model->search() в dataProvider of CGridView. Затем вы можете построить свои критерии внутри метода $model->search(). Я рекомендую вам сгенерировать образец CRUD в yii и посмотреть сгенерированный код.

03.03.2015
  • @ talhamalik22: Вы пробовали мое решение? 03.03.2015
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]