@EVOSandru6

Как в yii1 для грида связанных данных вывести пагинатор и выставить кол-во записей на страницу?

Добрый день,

В случае работы с главной моделью, все понятно, но тут немного не догоняю:

$model = Hotels::model()->fndByPk(1);

$rooms = new CActiveDataProvider('Rooms',
[
    'criteria' =>
    [
        'condition'=>
            'hotel_id = '.$model->id .
            ' AND firm_id = ' . Firms::FIRM_ID,
    ],
    'pagination' =>
    [
        'pageSize' => 20,
    ],
]);



$this->widget('GridView',
[
    'id' => 'rooms-grid',
    'dataProvider' => $rooms,
 'template'    => "{pager}\n{items}\n{pager}",

    'pager'=> array(
        'prevPageLabel' => '« назад',
        'nextPageLabel' => 'далее »',
    ),

    'columns'   =>
    [

        [
             'header' => 'Название',
             'filter' => false,
             'value' => function ($data)
             {
                 return $data->name;
             }
        ],
        [
            'class' => 'CButtonColumn',
            'template' => '{delete}',
            'deleteButtonUrl' =>
                'Yii::app()->createUrl("/sadmin/rooms/delete",["id" => $data->id])',
        ],
    ],
]);


В данном случае не используется метод модели search() , т.к. данные связанные, template не помогает, pager не выводится. И непонятно как без search теперь регулировать кол-во строк на странице.
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
А что мешает вам сделать так:
$model = Hotels::model()->fndByPk(1);
$rooms_model= new Rooms('search');
$rooms_model->hotel_id=$model->id;
$rooms_model->firm_id=Firms::FIRM_ID;
$rooms=$rooms_model->search();

$rooms у нас можно будет вставить в dataProvider виджета GridView, так как метод search() возвратит CActiveDataProvider
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы