PDA

View Full Version : آموزش: PaginatorComponent



vahidqara
یک شنبه 21 اردیبهشت 1393, 13:07 عصر
امروز یک مثال بسیار کاربردی از PaginatorComponent بیان می کنم.

فرض کنید جدول Posts با جدول Categories رابطه ی M:N دارند که یک جدول واسط به نام categories_posts دارد طبق قوانیم نام گذاری Cake

حال میخواهیم با زدن کلیک بر روی یک مجموعه خاص تعداد پست های (مطلب) آن نمایش داده شود , تا اینجای کار سادس البته همه ی آن سادس :لبخندساده:

ولی فرض کنید تعداد پست های یک مجموعه زیاد هست مثلا 100 تا !! اینجا این کامپوننت به داد ما میرسد. چطور!!

خب ما دوس داریم در صفحه تعدادی پست نمایش داده شود (که کاملا دلبخواه است) , 10 تا یا بیشتر وبقیه ی پست های ذیگر در صفات بعد آن مجموعه ... Page 2 page 3

ابتدا کامپوننت را به AppController اضافه میکنیم که در تمامی برنامه بتوانیم از آن استفاده کنیم .



class AppController extends Controller {

public $components = array('Paginator')

}




حال در تابع category البته هر تابع ای که نیاز دارید بسته به شما دارد....
این کد رو مینویسیم



$this->paginate = array(
'limit'=>3,
'joins'=>array(
array(
'table'=>'categories_posts',
'alias'=>'categories_posts',
'conditions'=>array('post.id = categories_posts.post_id and categories_posts.category_id = '.$id.''),

)
)
);
$post = $this->paginate('Post');
$this->set('posts',$post);



این کد Jonin دو جدول واسط و جدول پست میباشد ... که بیان میکند تمامی پست های که زیر مجموعه ی این مجموعه با (id ) مشخص و ارسال شده است را برگردان...
که در این کد از PaginatorComponent استفاده شده..
در اینجا limit رو , روی 3 گذاشتم یعنی تعداد پستهای قابل نمایش هر صفحه 3 تا می باشد..
و در قسمت view که بازم بسته به طراحی و کد نویسی شما دارد به این شکل میتوان دکمه های بعدی و قبلی را سازماندهی کرد..




<div class="container">
<div class="pagination pagination-large">
<ul class="pager">


<?php
echo $this->Paginator->prev(__('قبلی'), array('tag' => 'li'), null, array('tag' => 'li','class' => 'disabled','disabledTag' => 'a'));
echo $this->Paginator->numbers(array('separator' => '','currentTag' => 'a', 'currentClass' => 'active','tag' => 'li','first' => 1));
echo $this->Paginator->next(__('بعدی'), array('tag' => 'li','currentClass' => 'disabled'), null, array('tag' => 'li','class' => 'disabled','disabledTag' => 'a'));
?>




</ul>
</div>

</div>




118862
در پناه حق