Silex app->redirect ne correspond pas itinéraires
Que mon application sur localhost, le chemin est: localhost/silex/web/index.php
, itinéraires définis comme dans le code ci-dessous, je m'attends à visiter localhost/silex/web/index.php/redirect
redirige me localhost/silex/web/index.php/foo
et affiche "foo". Au lieu de cela, il me redirige vers localhost/foo
.
Je suis nouveau sur le Silex et peut-être que j'ai eu tout faux. Quelqu'un pourrait-il expliquer où est le problème? Est-il du comportement correct et il doit rediriger pour les chemins d'accès absolus? Merci.
<?php
require_once __DIR__.'/../vendor/autoload.php';
use Symfony\Component\HttpFoundation\Response;
$app = new Silex\Application();
$app['debug'] = true;
$app->get('/foo', function() {
return new Response('foo');
});
$app->get('/redirect', function() use ($app) {
return $app->redirect('/foo');
});
$app->run();
OriginalL'auteur user2219435 | 2014-03-03
Vous devez vous connecter pour publier un commentaire.
La
redirect
url s'attend à une url de redirection, pas de in-app itinéraire. Essayez de cette façon:Est-il possible de rediriger une requête POST vers un en OBTENIR un?
Oui, en fait, si vous redirigez, la prochaine demande sera OBTENIR, la spécification http définit ce.
OriginalL'auteur Maerlyn
Pour les redirections internes, ce qui ne permet pas de changer l'URL demandée, vous pouvez également utiliser une sous-requête:
Voir aussi Faire des sous-Requêtes.
OriginalL'auteur Ralf Hertsch
Jusqu'à
"silex/silex": ">= 2.0"
, un natif de trait vous permettre de générer une URL basée sur le nom de la route.Vous pouvez remplacer :
Par :
Puis l'utiliser pour rediriger :
Une autre possibilité est de créer un trait de rediriger directement avec le nom de l'itinéraire :
Ajouter du caractère à votre définition d'application :
Ensuite l'utiliser partout où vous en avez besoin :
OriginalL'auteur Flo Schild