1
votes

Redirection vers une page différente dans Laravel

J'essaie de rediriger vers une autre page de mon application et je n'arrive pas à comprendre ce qui ne va pas dans ma configuration.

Pour la redirection, j'utilise

Route::get('PageController@a_home', function () {
   return view('a_home');
});

Dans mon fichier web.php il y a une route définie

  if($A->str_sifra!=$sifra)
      echo "Molimo pokušajte ponovo.";
  else
      return redirect('a_home');

Quand j'exécute la page, elle la recharge juste avec un décalage vers la droite dans une vue. Que me manque-t-il?


6 commentaires

Passer à droite? Utilisez-vous JS?


Non, juste php, html et mysql.


Quel navigateur alors? Les pages ne se déplacent pas à droite sans JS. À moins bien sûr que par décalage vers la droite, vous entendez autre chose qu'un changement visuel.


Je l'essaye dans Chrome et Mozilla. Non JS, et oui, je voulais dire visuellement. Il a cessé de changer avec la dernière modification, cependant. Je ne comprends pas quel est le problème ...


Sans plus de code, tout ce que nous pouvons vraiment faire est de deviner, et tout ce qui va faire est de créer des pages de tentatives. Cela dit, comme dit, les pages ne se déplacent pas visuellement sans JS. Il n'y a pas d'animation d'effacement du pare-brise lorsqu'une page se recharge ou est redirigée, donc soit vous utilisez JS sans savoir que vous l'êtes, comme à partir d'une bibliothèque incluse dans une page, soit quelque chose d'autre se passe avec votre navigateur, comme une extension qui interfère avec l'ordre naturel des choses.


OK, je me suis dit décalage / pas de différence de décalage. Il a cessé de se déplacer après que j'ai supprimé l'instruction de retour. Oh, et je suis sûr à 100% qu'il n'y a pas de js, puisque j'écris tout à partir de zéro, sans bibliothèques externes.


4 Réponses :


0
votes

Assurez-vous que votre itinéraire a un nom défini

redirect()->route('a_home')

et essayez d'utiliser ceci

Route::get('PageController@a_home', function () {
   return view('a_home');
})->name('a_home');


3 commentaires

Où appelle-t-on la redirection?


Je l'appelle depuis welcome.blade.php, et il devrait ouvrir a_home.blade.php, les deux sont situés dans le dossier de vue.


Le problème vient de la façon dont l'itinéraire est défini et non de la méthode de redirection



0
votes

vous devez vous référer à l'URI complet

redirect('PageController/a_home');


0 commentaires

1
votes

C'est parce que votre itinéraire est erroné, faites votre route en utilisant des fermetures comme

 Route::get('a_home', 'PageController@home')->name('a_home');

Et redirigez avec cette redirect () -> route ('a_home')

Ou si vous voulez utiliser une méthode de contrôleur alors:

Route::get('a_home', function () {
   return view('a_home');
})->name('a_home');

Et redirigez avec cette redirect () -> route ('a_home' )

Le premier argument est censé être l'URL


3 commentaires

Désolé, aucun changement à nouveau. La page se déplace juste vers la droite et c'est tout.


avez-vous suivi le routage dans la réponse?


décalage droit? à partir de quelle page essayez-vous de rediriger vers une autre?



0
votes

La solution au problème était assez simple. Au lieu de

if($A->str_sifra!=$sifra)
  echo "Molimo pokušajte ponovo.";
else 
    exit(redirect('a_home'));

J'avais juste besoin de

if($A->str_sifra!=$sifra)
  echo "Molimo pokušajte ponovo.";
else
  return redirect('a_home');

Merci à tous pour votre aide.


0 commentaires