لماذا لا يتذكر مرقّم الصفحات المعلمات المخصصة الخاصة بي عندما أذهب إلى الصفحة 2؟

StackOverflow https://stackoverflow.com/questions/147995

  •  02-07-2019
  •  | 
  •  

سؤال

عند استخدام مساعد ترقيم الصفحات في عروض cakephp، فإنه لا يتذكر أجزاء من عنوان url المخصص لاستخدامي.

على سبيل المثال:

http://example.org/users/index/moderators/page:2/sort:name/dir:asc

هنا المشرفين هي معلمة تساعدني في التصفية حسب هذا النوع.لكن الضغط على رابط مرقّم الصفحات لن يتضمن هذا الرابط.

هل كانت مفيدة؟

المحلول

للإضافة إلى إجابة ألكسندر مورلاند أعلاه، يجدر بنا أن نتذكر أن بناء الجملة قد تغير في CakePHP 1.3 وهو الآن:

$this->Paginator->options(array('url' => $this->passedArgs));

ويرد وصف هذا بمزيد من التفصيل في ترقيم الصفحات في طرق العرض قسم من كتاب CakePHP.

نصائح أخرى

السر هو إضافة هذا السطر إلى العرض الخاص بك:

$paginator->options(array('url'=>$this->passedArgs));

(لقد قمت بإنشاء هذا السؤال والجواب لأنه سؤال تم طرحه كثيرًا وأظل مضطرًا إلى البحث عن الإجابة لأنني لا أستطيع تذكره.)

$this->passedArgs هي الطريقة المفضلة للقيام بذلك من العرض.

قمت بحفظه لي!هذا ساعدني كثيرا، شكرا.

كنت بحاجة إلى طريقة لتمرير المعلمات التي أرسلتها في الأصل عبر النشر ($this->data) إلى مكون الترحيل، لذلك سيستمر استعلامي المخصص في استخدامها.

وهنا ما فعلته:

على وجهة نظري أضع

$paginator->options(array('url'=>$this->data['Transaction']));

قبل $paginator->prev('<< السابق' stuff.

القيام بذلك ، صنع الرابط التالي على paginator مثل ".../الصفحة: 1/start_date: 2000-01-01 ٪ 2000: 00: 00/end_date: 3000-01-01 ٪ 2023: 59: 59/payments_recieved: 1 "

ثم على وحدة التحكم الخاصة بي، كان عليّ فقط الحصول على المعلمات ووضعها في $this->data حتى تستمر وظيفتي كالمعتاد:

foreach($this->params['named'] as $k=>$v)
{
    /*
     * set data as is normally expected
     */
    $this->data['Transaction'][$k] = $v;
}

وهذا كل شيء.يعمل الترحيل مع استعلامي المخصص.:)

الخيارات هنا هي دليل جيد ...يمكنك أيضًا التحقق من مزيد من المعلومات حول ترقيم صفحات cakePHP على cakephp.org/view/166/Pagination-in-Views

باستخدام المعلمة "url" هذه، يمكنك فقط وضع السلسلة المفضلة لديك قبل ترقيم الصفحات في عنوان url..

إذا استخدمت هذه التقنية:

$urlpagin = '?my_get1=1&my_get2=2';
$paginator->options = array('url'=>$urlpagin);

لا أحصل إلا على:

url/controller/action/?my_get1=1&my_get2=2/sort:.../...

وخسرت كيك الحصول على المعلمات

هل لديك تقنية بديلة؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top