Recherche simple: Passage d'une variable de formulaire en URI à l'aide de CodeIgniter

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

  •  03-07-2019
  •  | 
  •  

Question

J'ai un formulaire de recherche sur chacune de mes pages. Si j’utilise formulaire, le code par défaut est $ _ POST . J'aimerais que le terme de recherche apparaisse dans l'URI:

http://example.com/search/KEYWORD

Cela fait environ une heure que je suis sur Google. En vain. J'ai seulement trouvé des articles sur la façon dont $ _GET est fondamentalement désactivé, en raison de la convention d'URI native. Je ne peux pas être le premier à vouloir ce genre de fonctionnalité, n'est-ce pas? Merci d'avance!

Était-ce utile?

La solution

Il y a une meilleure solution si vous avez affaire à des personnes sans JS activé.

Afficher:

<?php echo form_open('ad/pre_search');?>
   <input type="text" name="keyword" />
</form>

Contrôleur

<?php
    function pre_search()
    {
        redirect('ad/search/.'$this->input->post('keyword'));
    }

    function search()
    {
        // do stuff;
    }
?>

Je l'ai déjà souvent utilisé.

Autres conseils

Pour autant que je sache, il n’existe aucune méthode permettant de réaliser cela avec un simple POST. Cependant, vous pouvez accéder au formulaire via Javascript et mettre à jour la destination. Par exemple:

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

Consultez cet article pour savoir comment activer les chaînes de requête GET avec des URL segmentées.

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

Après l'activation, vous pouvez utiliser la méthode suivante pour récupérer les variables supplémentaires.

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

Cela est préférable car vous n'avez pas besoin de modifier le paramètre de configuration allowed_uri_chars. Vous pouvez obtenir "L'URI que vous avez soumis contient des caractères interdits". error si vous mettez simplement quelque chose que l'utilisateur entre dans l'URI.

Voici la meilleure solution:

$uri = 

Voici la meilleure solution:

<*>

Merci erunways !

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

Merci erunways !

Je ne connais pas grand chose à propos de CodeIgniter, mais c'est du PHP, donc $ _ GET ne devrait-il pas être encore disponible? Vous pouvez formater votre URL de la même manière que Google: mysite.com/search?q=KEYWORD et extraire les données avec $ _GET ['q'] .

En outre, un formulaire de recherche semble être un mauvais endroit pour utiliser POST; GET est un favori et n'implique pas que quelque chose est en train de changer côté serveur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top