CakePHP: Evitare GET campi modulo in URL
-
21-09-2019 - |
Domanda
Ho un modulo di ricerca che ha CakePHP 'type'=>'get'
. Fondamentalmente, uno degli elementi in forma è un pulsante di invio tipo di immagine. Quando il modulo viene inviato, l'URL ottengo sempre queste x & y coordinate dell'immagine pulsante di invio:
http://site.com/controller/action ? x = 22 & y = 36 & query = ciao
C'è un modo per evitare che le coordinate di mostrare nella URL? La ragione è in modo che qualcun altro potrebbe utilizzare lo stesso URL per effettuare la stessa ricerca, senza quella roba intuitivo nel collegamento.
Grazie!
Soluzione
Si potrebbe usare un po 'di javascript sul pulsante:
document.getElementById('myImageButton').onclick = function() {
this.form.submit();
return false;
};
In alternativa, nel controller nella funzione beforeFilter
, si potrebbe verificare la presenza delle variabili indesiderate, li striscia fuori e reindirizzare al bel URL. Questo significa che ci saranno 2 richieste HTTP fatte però.
Altri suggerimenti
Sembra che si sta cercando di fare un Post / Redirect / Get .
Ecco due esempi di fare questo in CakePHP:
I vantaggi di reindirizzare un POST
ad una richiesta GET
sono:
- Gli utenti non si ottiene il "Vuoi inviare di nuovo?" finestra di dialogo se si rinfrescano
- La pagina / query risultante può essere segnalibro
- Si può utilizzare di CakePHP built-in SEF routing, così invece di URL con
/search?q=contact
potete acquistare/search/contact
Invece di usare funzione di supporto submit
, utilizzare la funzione button
e impostare tipo di pulsante per inviare.
echo $this->Form->**button**($this->Html->image('header_search_icon.png'), array(**'type'=>'submit'**));