Einfache Suche: Passing Formularvariable zu URI CodeIgniter
-
03-07-2019 - |
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!
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.