Ricerca semplice: passaggio della variabile di modulo all'URI mediante CodeIgniter

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

  •  03-07-2019
  •  | 
  •  

Domanda

Ho un modulo di ricerca su ciascuna delle mie pagine. Se uso il form helper, per impostazione predefinita è $ _POST . Vorrei che il termine di ricerca fosse visualizzato nell'URI:

http://example.com/search/KEYWORD

Sono stato su Google per circa un'ora, ma inutilmente. Ho trovato solo articoli su come $ _GET sia sostanzialmente disabilitato, a causa della convenzione URI nativa. Non posso essere la prima persona a desiderare questo tipo di funzionalità, vero? Grazie in anticipo!

È stato utile?

Soluzione

C'è una soluzione migliore se hai a che fare con persone senza JS abilitato.

Visualizza:

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

L'ho usato molte volte prima.

Altri suggerimenti

Per quanto ne so, non esiste un metodo per ottenere ciò con un semplice POST. Tuttavia, è possibile accedere al modulo tramite Javascript e aggiornare la destinazione. Ad esempio:

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

Dai un'occhiata a questo post su come abilitare le stringhe di query GET insieme agli URL segmentati.

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

Dopo aver abilitato è possibile utilizzare il seguente metodo per recuperare le variabili aggiuntive.

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

Questo è meglio perché non è necessario modificare l'impostazione di configurazione consentita_uri_chars. Potresti ottenere " L'URI che hai inviato ha vietato i caratteri " errore se si inserisce semplicemente qualsiasi cosa l'utente immetta nell'URI.

Ecco la soluzione migliore:

$uri = 

Ecco la soluzione migliore:

<*>

Grazie erunways !

SERVER['REQUEST_URI']; $pieces = explode("/", $uri); $uri_3 = $pieces[3];

Grazie erunways !

Non so molto di CodeIgniter, ma è PHP, quindi $ _GET non dovrebbe essere ancora disponibile per te? Puoi formattare il tuo URL allo stesso modo di Google: mysite.com/search?q=KEYWORD ed estrarre i dati con $ _GET ['q'] .

Inoltre, un modulo di ricerca sembra un brutto posto per usare POST; GET è un segnalibro e non implica che qualcosa stia cambiando sul lato server.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top