it-swarm.com.de

wie verwende ich Slim Redirect?

Ich habe ein Problem. Ich verwende Slim und habe eine Route für meine Hauptseite:

$app->get('/', function() use ($app) { ... 

In einem meiner Controller möchte ich zur Hauptseite umleiten, also schreibe ich

$app->response->redirect('/', 303);

Anstelle der Weiterleitung zur "/" - Route werde ich jedoch zum Stammverzeichnis meines lokalen Servers umgeleitet, der http://localhost/ ist. 

Was mache ich falsch? Wie soll ich die Umleitungsmethode verwenden?

14
dKab

Mit Slim können Sie Routen benennen und dann basierend auf diesem Namen mithilfe von urlFor() zu ihnen zurückleiten. Ändern Sie in Ihrem Beispiel Ihre Route in:

$app->get('/', function() use ($app) { ... })->name("root");

und dann wird Ihre Weiterleitung:

$app->response->redirect($app->urlFor('root'), 303);

Weitere Informationen finden Sie unter Route Helpers in der Slim-Dokumentation.

18
Adrian Wragg

Von Slim3 docs http://www.slimframework.com/docs/start/upgrade.html

$app->get('/', function ($req, $res, $args) {
  return $res->withStatus(302)->withHeader('Location', 'your-new-uri');
});
13
Gene Bo

Slim 3

$app->get('/', function ($req, $res, $args) {
  $url = 'https://example.org';
  return $res->withRedirect($url);
});

Referenz: https://www.slimframework.com/docs/v3/objects/response.html#returning-a-redirect

10
Arthur Araújo

gib deiner '/' route einen Namen, 

$app = new \Slim\Slim();
$app->get('/', function () {
       echo "root page";
    })->name('root');


$app->get('/foo', function () use ($app) {
       $app->redirect($app->urlFor('root') );
    });

$app->run();

Dies sollte Ihnen die richtige URL zum Weiterleiten geben

http://docs.slimframework.com/routing/names/http://docs.slimframework.com/routing/helpers/#redirect

4
//Set Default index or home page
$app->get('/', function() use ($app) {
      $app->response->redirect('login.php');
});
3
bamossza

Für Slim v3.x:

Verwenden Sie $response->withStatus(302)->withHeader('Location', $url); anstelle von $app->redirect();

In Slim v2.x würde man die Hilfsfunktion $ app-> redirect () verwenden. eine Umleitungsanfrage auslösen. In Slim v3.x kann man die Response-Klasse genauso verwenden (siehe folgendes Beispiel) [1].

Verwenden Sie pathFor() anstelle von urlFor():

urlFor () wurde in pathFor () umbenannt und befindet sich im Router-Objekt . Außerdem ist pathFor () Basispfad-bewusst [2].

Beispiel:

$app->get('/', function ( $request, $response, $args ) use ( $app ) {
  $url = $this->router->pathFor('loginRoute');
  return $response->withStatus(302)->withHeader('Location', $url);
});

Hinweis: zusätzliche Parameter können bereitgestellt werden, indem ein assoziatives Array von Parameternamen und -werten als zweites Argument von pathFor() wie folgt übergeben wird: $this->router->pathFor('viewPost', ['id' => 1]);.

Die pathFor () - Methode des Routers akzeptiert zwei Argumente:

  1. Der Routenname
  2. Assoziatives Array von Routenmusterplatzhaltern und Ersatzwerten [3]

Verweise:

  1. Geänderte Weiterleitung
  2. urlFor () befindet sich jetzt pathFor () im Router
  3. Streckennamen
2
MNR

Ich glaube, ich war mit einem ähnlichen Problem konfrontiert, und das Problem lag in meiner Datei .htaccess config. Es sollte eigentlich so aussehen:

RewriteEngine On
RewriteBase /api #if your web service is inside a subfolder of your app, 
# you need to pre-append the relative path to that folder, hope this helps you!

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
0
Coronellx

Ich denke mit ./ statt/funktioniert auch.

0