CodeIgniter: Passer des variables par l'URL de solutions de rechange à l'utilisation de GET
Je suis nouveau sur CodeIgniter et viens de découvrir les difficultés à l'aide de la méthode GET de passer des variables par l'URL (par ex. domain.com/page.php?var1=1&var2=2).
Je comprends qu'une approche consiste à passer les variables dans l'URI segments mais je n'ai pas vraiment compris comment faire, mais comme elle semble créer l'attente d'avoir une fonction dans le contrôleur nommé comme l'URI spécifiques segment????
De toute façon au Lieu d'OBTENIR de l'aide, je ai décidé d'utiliser des POST en adaptant un bouton de soumission (déguisé comme un lien) avec les variables cachées dans les champs de saisie. J'ai créé la solution suivante qui semble bien fonctionner, mais je me demande si je suis sur la bonne voie ou si il ya un moyen plus facile de passer des variables par l'intermédiaire d'un lien à l'intérieur de CodeIgniter?
J'ai créé la classe suivante dans l'application/bibliothèques/
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class C_variables {
function variables_via_link($action, $link_text, $style, $link_data) {
$attributes = array('style' => 'margin:0; padding:0; display: inline;');
echo form_open($action, $attributes);
$attributes = array('class' => $style, 'name' => 'link');
echo form_submit($attributes, $link_text);
foreach ($link_data as $key => $value){
echo form_hidden($key, $value);
}
echo form_close();
}
}
?>
Avec le code CSS suivant:
/*
SUBMIT BUTTON AS LINK
adapted from thread: http://forums.digitalpoint.com/showthread.php?t=403667
Cross browser support (apparently).
*/
.submit_as_link {
background: transparent;
border-top: 0;
border-right: 0;
border-bottom: 1px solid #00F;
border-left: 0;
color: #00F;
display: inline;
margin: 0;
padding: 0;
cursor: hand /* Added to show hand when hovering */
}
*:first-child+html .submit_as_link { /* hack needed for IE 7 */
border-bottom: 0;
text-decoration: underline;
}
* html .submit_as_link { /* hack needed for IE 5/6 */
border-bottom: 0;
text-decoration: underline;
}
Lien, puis créé à l'aide du code suivant dans la VUE:
<?php
$link = new C_variables;
$link_data=array('var1' => 1, 'var2' => 2);
$link ->variables_via_link('destination_page', 'here is a link!',
'submit_as_link', $link_data);
?>
Merci pour votre aide...
OriginalL'auteur John Durrant | 2010-04-28
Vous devez vous connecter pour publier un commentaire.
Pour être honnête, la création d'un formulaire pour effectuer le travail de liens hypertexte est un peu une sémantique non non.
Codeigniter par défaut complètement bandes tout $_GET paramètres. Donc, sans l'activation de chaînes de requête dans le fichier de configuration, vous ne pouvez pas effectuer les opérations suivantes:
http://my-domain.com/script/?param=1¶m2=foo
Pour un débutant, le segment d'Url sont un peu d'une courbe d'apprentissage, mais bientôt faire sens. Un bon exemple de production de la façon dont segment de l'Url dans la pratique est de Débordement de Pile!
Donc si vous voulez copier un Débordement de Pile de vue de la question de la page avec l'URL suivante dans codeigniter:
Dans votre contrôleur par défaut créer la méthode suivante:
Le troisième segment (question titre slug) est effectivement ignorée. Mais vous pouvez prendre avec les éléments suivants:
Plus d'informations ici: https://codeigniter.com/user_guide/libraries/uri.html
Si vous n'aimez pas l'idée de devoir le nom d'une méthode dans votre contrôleur avec le premier URI segment. Vous pouvez créer un itinéraire personnalisé dans votre configuration des routes.
Alors, imaginez que vous créez un contrôleur appelé
questions_controller.php
, et ont une méthode appeléeshow_question_by_id()
. Pour garder la/questions/1234/some-text-here
style URI, mais de la gérer avec le contrôleur ou la méthode ci-dessus, vous pouvez créer le parcours suivant:Plus d'informations ici: https://codeigniter.com/user_guide/general/routing.html
Si vous souhaitez avoir un nombre infini de paramètres dans l'URL, ou je ne sais pas quels sont les paramètres à attendre par exemple
mysite.com/my_page/param1/12/param2/foo/param3/bar/param4/baz/another-param/xyz-123
Vous pouvez scinder en un tableau associatif à l'aide de la
$this->uri->uri_to_assoc(1)
URI méthode pour obtenir le suivant:Vous pouvez gérer cela exactement comme si vous étiez en utilisant le $_GET tableau. Vous pouvez ensuite combiner cette approche, avec des itinéraires personnalisés pour vous donner pratiquement n'importe quel URI et de la structure de la demande vous le souhaitez. Vous obtenez également l'avantage que chaque paramètre et le segment a été automatiquement nettoyé. C'est un peu d'une courbe d'apprentissage, et peut sembler comme un travail supplémentaire pour commencer, mais est en fait assez flexible et vous aide à construire une candidature bien structurée.
c'est une bonne accademic solution. Mais twitter, ebay, et d'autres continuent à utiliser get. Également obtenez est un standard (oui, en fait c'est le protocole HTTP!). Ainsi, tout ce qui les discussions sont tout simplement pas de sens. HTTP GET verbe n'est pas pris en charge par Codeigniter, qui en font le cadre un peu inutilisable, donnant le fait que c'est un http cadre. Bonne solution, mais il n'est pas pour le web.
OriginalL'auteur rbaker86
Pourquoi diable êtes-vous poster votre CSS si vous êtes aux prises avec des Chaînes de Requête?
Folie.
De toute façon, vous pouvez re-créer l'accès à la Chaîne de Requête de plusieurs façons dans CodeIgniter.
uri_to_assoc()
Tout d'abord il y a le merveilleux associatif URI segments.
Vous pouvez utiliser le code suivant pour accéder à ces deux valeurs:
Bien sûr, cela est un remplacement pour les chaînes de requête, mais si vous pouvez utiliser ce faire.
parse_str()
Si vous avez du code mondial comme un crochet ou MY_Controller vous pouvez re-remplir $_GET avec le one-liner suivant:
REQUEST_URI
Définir votre $config['uri_protocol'] "REQUEST_URI" et activer les chaînes de requête. REQUEST_URI ne fonctionnent pas sur tous les serveurs, donc ce n'est pas la plus parfaite de la méthode, même si elle est la plus facile.
style de les soumettre? Êtes-vous sûr que vous êtes sur la bonne Q et Un site?
Calmer John, juste avoir un peu de plaisir. A la poste de l'aide?
Pas encore essayé de Phil, mais le fera - merci encore.
devraient être reconnaissants de ce que Phil Esturgeon répond à votre question 🙂 pas se plaindre à propos de son drôle de remarques.
OriginalL'auteur Phil Sturgeon
J'utilise et ça marche:
d'abord, vous mettez vos variables dans la chaîne de requête comme ceci:
dans mycontroler je recevoir les paramètres de cette manière:
OriginalL'auteur ganji