Frage

Ich habe ein Suchformular auf jedem meiner Seiten. Wenn ich Form Helfer verwenden, Standardwerte, es zu $_POST. Ich würde den Suchbegriff wie in der URI zu zeigen:

http://example.com/search/KEYWORD

Ich habe für etwa eine Stunde auf Google, aber ohne Erfolg. Ich habe festgestellt, nur Artikel auf, wie $_GET grundsätzlich deaktiviert ist, weil die nativen URI Konvention. Ich kann nicht die erste Person sein, diese Art von Funktionalität zu wollen, bin ich? Vielen Dank im Voraus!

War es hilfreich?

Lösung

Es gibt eine bessere Verlegenheit, wenn Sie mit Leuten zu tun, ohne JS aktiviert.

:

<?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;
    }
?>

Ich habe verwendet, bevor diese eine Menge Zeit.

Andere Tipps

Soweit ich weiß, gibt es keine Methode, dies mit einem einfachen POST bewerkstelligen. Allerdings können Sie das Formular über Javascript zugreifen und das Ziel aktualisieren. Zum Beispiel:

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

diesen Beitrag Schauen Sie sich auf, wie Strings GET-Abfrage zu ermöglichen, zusammen mit segmentierten Urls.

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

Nach der Aktivierung, dass Sie die folgende Methode verwenden, können die zusätzlichen Variablen abgerufen werden.

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

Das ist besser, weil Sie die permitted_uri_chars Config-Einstellung nicht ändern müssen. Sie können erhalten „Die URI Sie Zeichen nicht zulässig abgegeben hat“ Fehler, wenn Sie einfach etwas setzen der Benutzer in der URI eingibt.

Hier ist die beste Lösung:

$uri = $_SERVER['REQUEST_URI'];

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

$uri_3 = $pieces[3];

Danke erunways !

Ich weiß nicht viel über CodeIgniter, aber es ist PHP, so sollte nicht noch zur Verfügung steht $_GET? Sie könnten Ihre URL auf die gleiche Weise formatiert Google tut. mysite.com/search?q=KEYWORD und ziehen Sie die Daten aus mit $_GET['q']

Außerdem scheint ein Suchformular wie ein schlechter Ort POST zu verwenden; GET ist ein Lesezeichen und bedeutet nicht, dass etwas serverseitige ändert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top