2013-06-26 1 views
4

Как создать из списка папок список раскрывающегося списка с элементами на страницу? Значение по умолчанию составляет 20 элементов на страницу, я хочу, чтобы получить что-то вроде этого:Элементы CakePHP на странице хелпера

Show 
<select> 
    <option value="10">10</option> 
    <option value="25">25</option> 
    <option value="50">50</option> 
    <option value="100">100</option> 
</select> 
entries 

http://jsfiddle.net/HkWuH/

ответ

7

Как @BigToach упоминалось меня добавить это метод в мой контроллер

$this->paginate = array(
    'paramType' => 'querystring', 
    'limit' => 30, 
    'maxLimit' => 100 
); 

и добавьте следующий код в мой взгляд

$limit = $this->params->query['limit']; 
$options = array(5 => '5', 10 => '10', 20 => '20'); 

echo $this->Form->create(array('type'=>'get')); 

echo $this->Form->select('limit', $options, array(
    'value'=>$limit, 
    'default'=>20, 
    'empty' => FALSE, 
    'onChange'=>'this.form.submit();', 
    'name'=>'limit' 
    ) 
); 
echo $this->Form->end(); 
+0

+1, Хороший ответ, действительно помог сэкономить мое время –

2

Результатов на страницу приводятся параметром «предела» в массиве постраничной

<?php 
$this->paginate = array(
    'paramType' => 'querystring', 
    'limit' => 30, 
); 
?> 

Вы можете переопределить это, установив предел в качестве значения строки запроса. Пример:

?limit=40 

Оттуда вам просто нужно создать выпадающее меню, которое изменит URL-адрес, когда они выберет номер на странице.

Возможно, вы также захотите реализовать maxLimit, чтобы пользователи не меняли это значение на чрезвычайно большое число.

+0

Спасибо , Это мне очень помогло! – jtomaszk

2

(Это действительно просто комментарий на Warthel4578-х ответьте, но мне не хватает комментариев, чтобы прокомментировать ... просто хотел поделиться этим советом для тех, кто сталкивается с тем же вопросом, который у меня был с этим решением.)

Таким образом, я продолжал получать сообщение об ошибке «Неопределенный индекс: предел» (на линии, которая устанавливает $limit = $this->params->query['limit'];) при начальной загрузке страниц моих разбитых на страницы результатов, хотя после изменения значения выпадающего списка и обновленных постраничных результатов ошибка исчезла.

На месте $limit = $this->params->query['limit'];, я должен был использовать это, на мой взгляд:

$page_params = $this->Paginator->params(); 
$limit = $page_params['limit'];