رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
PaginatorComponent
#1
Smile 
امروز یک مثال بسیار کاربردی از 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> 


فایل‌های پیوست تصاویر بندانگشتی
   
پاسخ
سپاس شده توسط parsig ، saeid ، saleh


پیام‌های این موضوع
PaginatorComponent - vahidqara - 2014/06/18, 04:47 PM
RE: PaginatorComponent - fery - 2014/06/19, 02:13 PM
RE: PaginatorComponent - saeid - 2014/06/19, 08:50 PM
RE: PaginatorComponent - parsig - 2014/06/20, 12:07 AM

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان