Сортировка в index action контроллера user

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
BrusSENS
Сообщения: 565
Зарегистрирован: 2012.07.26, 06:51
Откуда: Новороссийск
Контактная информация:

Сортировка в index action контроллера user

Сообщение BrusSENS »

Доброго времени суток :) Вобщем сегодня столкнулся с такой проблемой:
В gii была создана модель User и соответственно контроллер UserController.
К моему сожалению gii не предоставляет изначально возможности вывода результата по заданным условиям.
СОбственно вопрос такой:
Для вывода пользователей с определённым region_id я использовал вот такую схему в indexAction

Код: Выделить всё

public function actionIndex()
    {
        $dataProvider=new CActiveDataProvider('User', 
        array(
    'criteria'=>array(
        'condition'=>'region_id = :region_id',
        'params'=>array(':region_id'=>$_GET['region_id']),
    ),
        
        
        
        ));
        $this->render('index',array(
            'dataProvider'=>$dataProvider,
        ));
    } 
Происходит выборка по предоставленному region_id, но как сделать, что бы при region_id = null выводились все пользователи?
Заранее спасибо всем отписавшимся :)
Native Web - небольшой блог о веб разработке (временно на ремонте)
Режим обслуживания сайта для Yii 2.x.x
sergasd
Сообщения: 45
Зарегистрирован: 2011.02.17, 20:24

Re: Сортировка в index action контроллера user

Сообщение sergasd »

Можно формировать criteria в зависимости от условия и подставлять ее в dataProvider так:

Код: Выделить всё

$criteria = array(
    'condition' => ''
);

$dataProvider = new CActiveDataProvider('User', array(
    'criteria' => $criteria,
));
Аватара пользователя
BrusSENS
Сообщения: 565
Зарегистрирован: 2012.07.26, 06:51
Откуда: Новороссийск
Контактная информация:

Re: Сортировка в index action контроллера user

Сообщение BrusSENS »

Примерно так и думал :) Вот так сделал :)

Код: Выделить всё

    public function actionIndex()
    {
    $criteria = array();
    if($_GET['region_id']) {
    $criteria['condition'] = 'region_id = :region_id';
    $criteria['params'] = array(':region_id'=>$_GET['region_id']);
    }
        $dataProvider=new CActiveDataProvider('User', 
        array(
    'criteria'=>$criteria,
    'pagination'=>array(
        'pageSize'=>20,
    ),
        
        
        
        ));
        $this->render('index',array(
            'dataProvider'=>$dataProvider,
        ));
    }
 
Native Web - небольшой блог о веб разработке (временно на ремонте)
Режим обслуживания сайта для Yii 2.x.x
Ответить