/
  • استفاده از zend_paginator

  • صفحه‌ها (2):
  • ارسال پاسخ   امتیاز موضوع:
    • 0 رأی - میانگین امیتازات: 0
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی استفاده از zend_paginator
    نویسنده پیام
    nasserghiasi آفلاین
    ناصر GH
    ***

    ارسال‌ها: 242
    تاریخ عضویت: ۱۳۸۸ آذر ۷
    اعتبار: 2
    تشکرها : 127
    ( 41 تشکر در 22 ارسال )
    ارسال: #1
    استفاده از zend_paginator
    مستندات بخش zend_paginator فکر میکنم کمی گنگ هست، می تونید یه راهنمایی با مثال کامل تری نسبت به مستندات زند در باره استفاده از این امکان بگذارید؟
    ممنون میشم
    ۱۳۸۸ بهمن ۱۴ ۰۴:۰۴ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,697
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6197 تشکر در 3438 ارسال )
    ارسال: #2
    RE: استفاده از zend_paginator
    از دیتابیس می خواین استفاده کنین یا از آرایه؟
    ۱۳۸۸ بهمن ۱۴ ۰۷:۲۲ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    nasserghiasi آفلاین
    ناصر GH
    ***

    ارسال‌ها: 242
    تاریخ عضویت: ۱۳۸۸ آذر ۷
    اعتبار: 2
    تشکرها : 127
    ( 41 تشکر در 22 ارسال )
    ارسال: #3
    RE: استفاده از zend_paginator
    از دیتابیس که ممکنه از کش هم استفاده بشه
    ۱۳۸۸ بهمن ۱۴ ۰۸:۱۹ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,697
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6197 تشکر در 3438 ارسال )
    ارسال: #4
    RE: استفاده از zend_paginator
    قدم اول این هست که adapter رو‌ ایجاد کنین که یکی از اون ها واسه دیتابیس هست (این قسمتای توی کنترلر انجام میشه)
    کد PHP:
    $adapter = new Zend_Paginator_Adapter_DbSelect($db->select()->from('posts')); 

    Zend_Paginator_Adapter_DbSelect
    یه دونه پارامتر‌ می گیره که آبجکت select‌ هست که حتی این آبجکت می تونه از select مدل دیتابیس هم باشه

    حالا شما باید تعداد کل ستون‌هاتون رو بدین. برای اینکار باید از setRowCount ‌استفاده کنین. می تونین مستقیما به این متد یه عدد بدین مثلا ۱۰۰. یعنی ۱۰۰ تا رکورد دارم.‌ یا اینکه نه بیایی از select بدی‌ .
    کد PHP:
    $adapter->setRowCount($db->fetchRow($db->select()->from('posts')->array('COUNT(*_by) as `count`'))->count
    ); 

    حالا‌ میشه آبجکت اصلی‌ رو ساخت

    کد PHP:
    $paginator = new Zend_Paginator($adapter); 

    حالا‌ ‌پاسش میدیم به view
    کد PHP:
    $this->view->paginator=$paginator 

    حالا‌ برای اینکه آیتمهای موجود رو نشون بدیم می تونیم از حلقه استفاده کنیم. این مثال خود zend هست. (منظور رکوردهایی هست که توی اون صفحه وجود داره) (این قسمتها ماله view هست )

    کد PHP:
    <html>
    <
    body>
    <
    h1>Example</h1>
    <?
    php if (count($this->paginator)): ?>
    <ul>
    <?php foreach ($this->paginator as $item): ?>
      <li><?php echo $item?></li>
    <?php endforeach; ?>
    </ul>
    <?php endif; ?>

    <?php echo $this->paginationControl($this->paginator,
                                        
    'Sliding',
                                        
    'my_pagination_control.phtml'); ?>
    </body>
    </html> 
    فقط هلپر‌ paginationControl می مونه که با این می خواد صفحه بندی رو نشون بدیم.‌ پارامتر اول که مشخصه چیه . پارامتر دوم هم توی داکیومنت به داخل یه جدول توضیحاتش رو داده. پارامتر آخر هم یه فایل phtml هست که نحوه نمایش رو نشون میده. که خود زند سه مثال برای این صفحه آورده که یکیش این هست

    کد PHP:
    <?php if ($this->pageCount): ?>
    <div class="paginationControl">
    <!-- Previous page link -->
    <?php if (isset($this->previous)): ?>
      <a href="<?php echo $this->url(array('page' => $this->previous)); ?>">
        < Previous
      </a> |
    <?php else: ?>
      <span class="disabled">< Previous</span> |
    <?php endif; ?>

    <!-- Numbered page links -->
    <?php foreach ($this->pagesInRange as $page): ?>
      <?php if ($page != $this->current): ?>
        <a href="<?php echo $this->url(array('page' => $page)); ?>">
            <?php echo $page?>
        </a> |
      <?php else: ?>
        <?php echo $page?> |
      <?php endif; ?>
    <?php 
    endforeach; ?>

    <!-- Next page link -->
    <?php if (isset($this->next)): ?>
      <a href="<?php echo $this->url(array('page' => $this->next)); ?>">
        Next >
      </a>
    <?php else: ?>
      <span class="disabled">Next ></span>
    <?php endif; ?>
    </div>
    <?php endif; ?>

    فقط چند تا بحث دیگه می مونه توی قسمت کنترلر صفحه فعلی رو خود zend ‌مشخص‌‌ نمی کنه و خودت باید این رو مشخص کنی که توی کنترل برای مثالهای بالا می تونی از کد زیر استفاده کنی
    کد PHP:
    $paginator->setCurrentPageNumber($this->_getParam('page')); 

    البته من اینها رو تست نکردم. خودم از اینا استفاده می کنم. اگر مشکلاتی داشته باشد ممکنه توی select ها باشه.‌‌ اگر مشکلی داشت و تونستید برطرف کنید بیاد بگید تا اصلاح کنم اگرم نتونستید اخطار رو بدید تا بررسیش کنم
    ۱۳۸۸ بهمن ۱۵ ۱۲:۵۶ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : nasserghiasi scorpion
    nasserghiasi آفلاین
    ناصر GH
    ***

    ارسال‌ها: 242
    تاریخ عضویت: ۱۳۸۸ آذر ۷
    اعتبار: 2
    تشکرها : 127
    ( 41 تشکر در 22 ارسال )
    ارسال: #5
    RE: استفاده از zend_paginator
    ضمنا ملاحظات امنیتی دیتابیس در نظرگرفته شده یا باید خودمان انجام دهیم؟
    چرا در نمی شود از parent directory استفاده کرد؟ مثلا من الگوی آماده ای برای صفحه بندی در پوشه تمپلیت های تم قرار داده ام و می خواهم همه جا از آن استفاده شود ولی نمی شود.
    (آخرین ویرایش در این ارسال: ۱۳۸۸ بهمن ۱۵ ۰۲:۰۰ صبح، توسط nasserghiasi.)
    ۱۳۸۸ بهمن ۱۵ ۰۱:۳۲ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,697
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6197 تشکر در 3438 ارسال )
    ارسال: #6
    RE: استفاده از zend_paginator
    چون‌ از آبجکت select استفاده ‌می‌کنیم نمی خواد
    برای سوال آخری هم شما می تونید استفاده کنید. ولی در کل برای چیزی که می خوایید از layout ‌استفاده کنید
    ۱۳۸۸ بهمن ۱۵ ۱۲:۱۰ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : nasserghiasi
    nasserghiasi آفلاین
    ناصر GH
    ***

    ارسال‌ها: 242
    تاریخ عضویت: ۱۳۸۸ آذر ۷
    اعتبار: 2
    تشکرها : 127
    ( 41 تشکر در 22 ارسال )
    ارسال: #7
    RE: استفاده از zend_paginator
    دست شما درد نکنه ، مشکل من در رابطه با zend_paginator حل شد فقط مشکلم استفاده از یک الگوی آماده برای صفحه بندی هست که متاسفانه نمی شود از parent directory استفاده کرد و شما گفتید که می تونید بجای اون از layout استفاده کنید! می شه بگید چجوری؟
    ۱۳۸۸ بهمن ۱۵ ۱۱:۵۴ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,697
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6197 تشکر در 3438 ارسال )
    ارسال: #8
    RE: استفاده از zend_paginator
    فکر‌ کنم قبلا بد متوجه شدم که گفتم از layotu استفاده کنید.
    من روی نسخه های قدیمیش با ../ می‌ ذاشتم اولش به پوشه قبلی میرفت
    ۱۳۸۸ بهمن ۱۶ ۰۱:۲۲ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    nasserghiasi آفلاین
    ناصر GH
    ***

    ارسال‌ها: 242
    تاریخ عضویت: ۱۳۸۸ آذر ۷
    اعتبار: 2
    تشکرها : 127
    ( 41 تشکر در 22 ارسال )
    ارسال: #9
    RE: استفاده از zend_paginator
    پس با این حساب امکان استفاده از الگوی خارج از پوشه وجود نداره و برای هر ماژول که ایجاد می کنم یک الگوی Pagination هم باید ایجاد کنم؟!
    ۱۳۸۸ بهمن ۱۹ ۰۹:۵۴ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,697
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6197 تشکر در 3438 ارسال )
    ارسال: #10
    RE: استفاده از zend_paginator
    از ../ استفاده کردین؟‌ تا جایی که یادمه اینجوری میشد. اگر نمیشه بگید تا یه بررسی کنم
    ۱۳۸۸ بهمن ۱۹ ۱۰:۳۵ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

  • صفحه‌ها (2):
  • ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS