2009-12-22 4 views
3

J'ai un formulaire de recherche CakePHP qui a 'type'=>'get'. Fondamentalement, l'un des éléments dans le formulaire est un bouton de soumission de type image. Lorsque le formulaire est posté, dans l'URL, je reçois toujours ces coordonnées x & y du bouton soumettre l'image:CakePHP: Empêche les champs de formulaire GET dans l'URL

http://site.com/controller/action? x = 22 & y = 36 & query = bonjour

Est-il possible que je peux empêcher les coordonnées d'apparaître dans l'URL? La raison en est que quelqu'un d'autre pourrait utiliser la même URL pour effectuer la même recherche, sans ce truc non intuitif dans le lien.

Merci!

+1

Déplacez le bouton hors du formulaire et collez-y javascript pour déclencher la soumission du formulaire. –

+0

Je reçois ces coordonnées 'x' et 'y' lorsque j'essaie d'accéder aux variables $ _POST également. Je voulais que mon formulaire soit soumis à un processeur de formulaires externe, que nous utilisons comme un emplacement centralisé pour les clients pour se connecter et télécharger des fichiers CSV avec des enregistrements. Wtf sont-ils? –

+0

Les coordonnées x et y sont lorsque vous utilisez un bouton d'envoi de type image. Ignorez-les ou modifiez le type de bouton submit en type = "submit". – ash

Répondre

3

Vous pouvez utiliser javascript sur le bouton:

document.getElementById('myImageButton').onclick = function() { 
    this.form.submit(); 
    return false; 
}; 

Alternativement, dans votre contrôleur dans la fonction beforeFilter, vous pouvez vérifier la présence des variables non désirées, les dépouiller et rediriger vers l'URL belle . Cela signifie qu'il y aura 2 requêtes HTTP faites cependant.

+0

Hmm, j'avais peur de cette duplication de requête HTTP. Eh bien, je suppose que c'est la seule solution qui reste. Merci! – ash

+0

avez-vous essayé la solution javascript? – nickf

+0

Oui, ça a marché. Merci! – ash

1

On dirait que vous cherchez à faire un Post/Redirect/Get.

Voici deux exemples de le faire dans CakePHP:

Avantages de la redirection d'un POST à une demande GET sont:

  1. utilisateurs don 't obtenir le "Voulez-vous re soumettre?" dialogue si elles rafraîchissent
  2. La page/requête résultante peut être bookmarked
  3. Vous pouvez utiliser intégré dans le routage SEF CakePHP, donc au lieu d'URL avec /search?q=contact vous pouvez obtenir /search/contact
0

Au lieu d'utiliser submit fonction d'aide , utilisez la fonction button et définissez le type de bouton à envoyer.

echo $this->Form->**button**($this->Html->image('header_search_icon.png'), array(**'type'=>'submit'**)); 
Questions connexes