8
votes

Codediciter quand utiliser Redirect () et quand utiliser $ ceci-> Load-> Voir

Je suis assez nouveau au codédiciteur et je me demande sur certaines meilleures pratiques de Cadedigniter. Quand devrais-je utiliser rediriger () par rapport à xxx

il semble que lorsque j'utilise redirige () alors $ ceci- > SESSION-> SET_FLASTDATA fonctionne comme si j'utilise, mais lorsque j'utilise xxx

Le message est affiché après une demande supplémentaire.


3 commentaires

Bien sûr flashdata ne fonctionne pas sur le courant $ ceci-> chargée-> vue (); , car il définit une valeur de session vue uniquement sur la page suivante. le navigateur (pas le courant actuel). Si vous souhaitez transmettre des données sur Affichage () , passez-le à la vue ($ page, $ données) Appeler lui-même comme deuxième paramètre.


Je ne suis pas sûr de ce que vous essayez de faire. Vous devez probablement passer un peu plus de temps à lire les documents CI .. Cela ressemble à vos choses de mélange un peu ....


Stackoverflow.com/a/32866456/412591


5 Réponses :


7
votes

Je pense que vous avez vraiment répondu à votre propre question.

Utilisez Redirection () Lorsqu'un simple message Flash en haut d'une autre page est une réponse appropriée, utilisez-le $ ceci-> Load-> Vue () Lorsque vous fournissez une page complète de commentaires pour la demande entrante peut être.

Donc, par exemple, lorsqu'un nouvel utilisateur indique la page "Success" serait une vue chargée et peut-être quand un utilisateur modifie quelque chose dans leur compte, un message flash "changements enregistrés" ou la démarrage similaire sur la même page est suffisante.


1 commentaires

Je me lance bien, ils semblent juste redondants bien que $ ceci-> Load-> View () semble manquant de fonctionnalités telles que l'utilisation des messages Flash. Vous pouvez sûrement vous empêcher de toujours utiliser redirect () ?



6
votes

Redirection est également utile pour deux autres problèmes courants:

  • Lorsqu'une ressource dans votre application est déplacée (et que vous souhaitez que les clients se souviennent de la nouvelle URI)
  • Après avoir posté un formulaire comme une étape dans la prévention des repuposts de bouton arrière

0 commentaires

1
votes

C'est assez simple. Quelle URL voulez-vous que l'utilisateur soit sur? S'ils sont sur URL1 et post des données sur URL1 et que vous chargez simplement une vue différente, ils seront toujours sur URL1. Si vous redirigez vers URL2, ils iront à URL2.


0 commentaires

4
votes

Votre observation est correcte que chaque fois que vous créez des flashdata il est uniquement disponible l'heure. C'est parce que flashdata est juste un type spécial de la session qui sera disponible pour votre prochaine demande et après la demande suivante, elle sera automatiquement supprimée. Vous n'êtes pas obligé de prendre soin de sa suppression.

Ceci peut être testé avec le code: xxx

rien ne sera imprimé. Mais maintenant, la prochaine fois exécuter le code suivant: xxx

Vous trouverez la sortie requise. Le faire une fois de plus ne donnera aucune sortie. C'est comme ça qu'ils travaillent. Pour plus de détails, vérifiez la section flashdata dans http://codeigniter.com/user_guide /libraires/sessions.html

pour la page en cours que vous n'exigeez pas flashdata simplement transmettre les données à la vue. Voici le code: xxx

la ligne de résultat est celui-ci Utiliser flashdata avec redirection () et pour les vues que vous devriez passer variables. J'espère que cela vous aide!


0 commentaires

1
votes

Vous devez utiliser PRG - Post / Redirection / Obtenir le motif. strong> Redirection et la vue de la charge ne sont pas identiques si vous avez le formulaire dans le contenu de la page.

Post/Redirect/Get Solution


0 commentaires