Ionut Flavius Pogacian
Ionut Flavius Pogacian

Reputation: 4801

Yii insert html in custom CListView

My problem: the two pagination options are on separate lines.

I have:

<div class="search_result searchconright">
    <?php
    $this->widget('zii.widgets.CListView', array(
        'id' => 'listViewSearch',
        'dataProvider' => $model->search(),
        'itemView' => '_index_post',
        'enablePagination' => true,
        'pager' => array(
                        'cssFile' => Yii::app()->baseUrl . '/css/clistview.css',
                        'header' => false,
                        'firstPageLabel' => 'First',
                        'prevPageLabel' => 'Previous',
                        'nextPageLabel' => 'Next',
                        'lastPageLabel' => 'Last',
                    ),
        'summaryText' => '',
        'sortableAttributes' => array(
        ),
    ));
    ?>
</div>
<div class="pagetxt">
    <span>View</span>
    <a class="page_search_limit">All</a>
    &nbsp;&nbsp;
    <a class="page_search_limit page_search_limit_active">3</a>
    &nbsp;
    <a class="page_search_limit page_search_limit_active">5</a>
    &nbsp;
    <a class="page_search_limit page_search_limit_active">24</a>
    &nbsp;
    <a class="page_search_limit">48</a>
</div>

and i would like to insert the entire html from class pagetxt in the widget, because the seccond pagination, is under the widgets pagination; i would like them to be on the same line

also, other suggestions are welcomed

the pagination: enter image description here

Upvotes: 1

Views: 2378

Answers (3)

Asgaroth
Asgaroth

Reputation: 4334

You have 2 options, first the way you are doing it, you can use the template property of CListView, to add the HTML where you want inside the widget.

But It looks like what you are trying to do, is to allow the user to specify the number of elements they want to see per page, so I'd recommend to use something like the PageSize extension

Upvotes: 1

Jon
Jon

Reputation: 437336

This is purely a layout issue: you need to have the pager render inline with your custom HTML.

One way to do that would be to give display: line-block to both of these DIVs with CSS, but of course you can also use other techniques like floating.

You can easily target the stock pager by setting the pagerCssClass property on your list view; the default is simply "pager", so you could do

$this->widget('zii.widgets.CListView', array(
        'id' => 'listViewSearch',
        'pagerCssClass' => 'pager pager-inline'
        // ...
);

and then for example

.pager.pager-inline, .pagetxt {
    display: inline-block;
}

Upvotes: 1

Philippe Boissonneault
Philippe Boissonneault

Reputation: 3949

I think you can do this with CSS:

.search_result, .pagetxt {
    display: inline-block;
}

To change the CListView pagination HTML, you would have to create a new CLinkPager and the pass parameters to it. So I think CSS is way simpler :)

Upvotes: 1

Related Questions