سؤال

لدي نموذج بحث CakePhP يحتوي على 'type'=>'get'. في الأساس ، أحد العناصر في النموذج هو زر إرسال صورة النوع. عند نشر النموذج ، في عنوان URL ، أحصل دائمًا على إحداثيات X&Y لزر إرسال الصورة:

http://site.com/controller/action?x = 22 & y = 36& Query = Hello

هل هناك أي طريقة يمكنني منع الإحداثيات من الظهور في عنوان URL؟ والسبب هو أن شخص آخر يمكنه استخدام عنوان URL نفسه لأداء نفس البحث ، دون تلك الأشياء غير البديلة في الرابط.

شكرًا!

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

المحلول

يمكنك استخدام بعض JavaScript على الزر:

document.getElementById('myImageButton').onclick = function() {
    this.form.submit();
    return false;
};

بدلاً من ذلك ، في وحدة التحكم الخاصة بك في beforeFilter وظيفة ، يمكنك التحقق من وجود المتغيرات غير المرغوب فيها ، وتجريدها وإعادة توجيه إلى عنوان URL لطيف. هذا يعني أنه سيكون هناك 2 طلبات HTTP المقدمة رغم ذلك.

نصائح أخرى

يبدو أنك تتطلع إلى القيام بعد/إعادة توجيه/الحصول على.

فيما يلي مثالان على القيام بذلك في CakePhP:

مزايا إعادة توجيه أ POST إلى GET الطلب هو:

  1. لا يحصل المستخدمون على "هل تريد إعادة تقديمها؟" مربع الحوار إذا قاموا بتحديث
  2. يمكن وضع إشارة مرجعية للصفحة/الاستعلام الناتج
  3. يمكنك استخدام توجيه SEF المدمج في CakePhP ، لذا بدلاً من عناوين URL /search?q=contact يمكنك الحصول /search/contact

بدلا من استخدام submit وظيفة المساعد ، والاستخدام button وظيفة وضبط نوع الزر للتقديم.

echo $this->Form->**button**($this->Html->image('header_search_icon.png'), array(**'type'=>'submit'**));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top