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!

È stato utile?

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:

  1. Gli utenti non si ottiene il "Vuoi inviare di nuovo?" finestra di dialogo se si rinfrescano
  2. La pagina / query risultante può essere segnalibro
  3. 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'**));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top