Basit Arama: CodeIgniter'ı kullanma URI Form değişkeni Passing

5 Cevap php

Benim sayfaların her bir arama formu var. Ben formu yardımcıyı kullanın, bu varsayılan $_POST. Ben arama terimi URI göstermek istiyorum:

http://example.com/search/KEYWORD

Ben yaklaşık bir saat boyunca Google'da olmuştur, ama boşuna ettik. Ben sadece $_GET temelde, çünkü yerli URI kongre, devre nasıl makaleler buldum. Ben bu tür işlevsellik istediğiniz ilk kişi olamaz, ben? Şimdiden teşekkürler!

5 Cevap

JS etkin olmadan insanlarla uğraşıyoruz eğer daha iyi bir düzeltme var.

View:

<?php echo form_open('ad/pre_search');?>
   <input type="text" name="keyword" />
</form>

Controller

<?php
    function pre_search()
    {
        redirect('ad/search/.'$this->input->post('keyword'));
    }

    function search()
    {
        // do stuff;
    }
?>

Ben önce bu bir çok kez kullandık.

Bildiğim kadarıyla, basit bir POST ile yerine getirmeye hiçbir yöntem yoktur. Ancak, JavaScript ile formunu erişmek ve hedef güncelleyebilirsiniz. Örneğin:

<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>

Parçalara URL'ler ile GET sorgu dizeleri birlikte etkinleştirmek için nasıl bu yazı check out.

http://codeigniter.com/forums/viewthread/56389/#277621

Eğer ek değişkenleri almak için aşağıdaki yöntemi kullanabilirsiniz etkinleştirdikten sonra.

// url = http://example.com/search/?q=text
$this->input->get('q');

Eğer permitted_uri_chars yapılandırma ayarı değiştirmeniz gerekmez, çünkü bu daha iyidir. Eğer sadece kullanıcı URI girdiği bir şey koyarsanız hata "Karakterlerin izin vermemesi sunulan URI" alabilirsiniz.

İşte en iyi çözümdür:

$uri = $_SERVER['REQUEST_URI'];

$pieces = explode("/", $uri);

$uri_3 = $pieces[3];

Teşekkürler erunways!

Ben CodeIgniter hakkında çok şey bilmiyorum, ama PHP, yani $_GET hala size kullanılabilir olmalıdır? Sen URL'yi Google yaptığı aynı şekilde biçimlendirmek olabilir: mysite.com/search?q=KEYWORD ve $_GET['q'] ile veri çekin.

Ayrıca, bir arama formu POST kullanmak için kötü bir yer gibi görünüyor; GET bookmarkable ve bir şey sunucu tarafı değişiyor anlamına gelmez.