CakePhP: منع الحصول على حقول النموذج في عنوان URL
-
21-09-2019 - |
سؤال
لدي نموذج بحث 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
الطلب هو:
- لا يحصل المستخدمون على "هل تريد إعادة تقديمها؟" مربع الحوار إذا قاموا بتحديث
- يمكن وضع إشارة مرجعية للصفحة/الاستعلام الناتج
- يمكنك استخدام توجيه SEF المدمج في CakePhP ، لذا بدلاً من عناوين URL
/search?q=contact
يمكنك الحصول/search/contact
بدلا من استخدام submit
وظيفة المساعد ، والاستخدام button
وظيفة وضبط نوع الزر للتقديم.
echo $this->Form->**button**($this->Html->image('header_search_icon.png'), array(**'type'=>'submit'**));