بحث بسيط:تمرير متغير النموذج إلى URI باستخدام CodeIgniter
-
03-07-2019 - |
سؤال
لدي نموذج بحث في كل صفحة من صفحاتي.إذا استخدمت مساعد النموذج، فسيتم تعيينه بشكل افتراضي $_POST
.أرغب في ظهور مصطلح البحث في عنوان URI:
http://example.com/search/KEYWORD
لقد كنت على جوجل لمدة ساعة تقريبا، ولكن دون جدوى.لقد وجدت فقط مقالات حول كيفية القيام بذلك $_GET
تم تعطيله بشكل أساسي، بسبب اتفاقية URI الأصلية.لا أستطيع أن أكون أول شخص يريد هذا النوع من الوظائف، أليس كذلك؟شكرا لك مقدما!
المحلول
هناك حل أفضل إذا كنت تتعامل مع أشخاص بدون تمكين JS.
منظر:
<?php echo form_open('ad/pre_search');?>
<input type="text" name="keyword" />
</form>
مراقب
<?php
function pre_search()
{
redirect('ad/search/.'$this->input->post('keyword'));
}
function search()
{
// do stuff;
}
?>
لقد استخدمت هذا مرات عديدة من قبل.
نصائح أخرى
وبقدر ما أعرف، لا توجد طريقة لإنجاز هذا مع وظيفة بسيطة. ومع ذلك، يمكنك الوصول إلى النموذج عن طريق جافا سكريبت وتحديث الوجهة. على سبيل المثال:
<form id="myform" onsubmit="return changeurl();" method="POST">
<input id="keyword">
</form>
<script>
function changeurl()
{
var form = document.getElementById("myform");
var keyword = document.getElementById("keyword");
form.action = "http://mysite.com/search/"+escape(keyword.value);
return true;
}
</script>
راجع هذا المنشور حول كيفية تمكين سلاسل استعلام GET مع عناوين URL المجزأة.
http://codeigniter.com/forums/viewthread/56389/#277621
بعد تمكين ذلك يمكنك استخدام الطريقة التالية لاسترداد المتغيرات الإضافية.
// url = http://example.com/search/?q=text
$this->input->get('q');
وهذا أفضل لأنك لا تحتاج إلى تغيير إعداد التكوين المسموح به_uri_chars.قد تحصل على الخطأ "يحتوي عنوان URI الذي أرسلته على أحرف غير مسموح بها" إذا قمت ببساطة بوضع أي شيء يدخله المستخدم في عنوان URI.
وهنا هو الحل الأفضل:
$uri = $_SERVER['REQUEST_URI'];
$pieces = explode("/", $uri);
$uri_3 = $pieces[3];
erunways !
وأنا لا أعرف الكثير عن كود إغنيتر، لكنه PHP، لذلك لا ينبغي أن $_GET
لا تزال متوفرة بالنسبة لك؟ هل يمكن تهيئة URL الخاص بك بنفس الطريقة جوجل لا: mysite.com/search?q=KEYWORD
وسحب البيانات خارجا مع $_GET['q']
والى جانب ذلك، نموذج بحث يبدو مثل مكانا سيئا لاستخدام وظيفة. GET هو إشارة مرجعية ولا يعني أن شيئا ما تغير من جانب الخادم.