بحث بسيط:تمرير متغير النموذج إلى URI باستخدام CodeIgniter

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

  •  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 هو إشارة مرجعية ولا يعني أن شيئا ما تغير من جانب الخادم.

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