how to use slim redirect

后端 未结 9 1411
有刺的猬
有刺的猬 2020-12-14 02:45

I have a problem. I am using slim and I have route for my main page:

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

In one of my controll

相关标签:
9条回答
  • 2020-12-14 03:00

    Slim 4:

    $response->withHeader('Location', '/redirect/to');
    

    Or in place of fixed string:

    use Slim\Routing\RouteContext;
    
    $routeParser = RouteContext::fromRequest($request)->getRouteParser();
    $url = $routeParser->urlFor('login');
    
    return $response->withHeader('Location', $url);
    

    Slim Documentation: http://www.slimframework.com/docs/v4/objects/response.html#returning-a-redirect RouteContext: https://discourse.slimframework.com/t/redirect-to-another-route/3582

    0 讨论(0)
  • 2020-12-14 03:03
    //Set Default index or home page
    $app->get('/', function() use ($app) {
          $app->response->redirect('login.php');
    });
    
    0 讨论(0)
  • 2020-12-14 03:07

    For Slim v3.x:

    Use $response->withStatus(302)->withHeader('Location', $url); instead of $app->redirect();

    In Slim v2.x one would use the helper function $app->redirect(); to trigger a redirect request. In Slim v3.x one can do the same with using the Response class like so (see the following example)[1].

    Use pathFor() instead of urlFor():

    urlFor() has been renamed pathFor() and can be found in the router object. Also, pathFor() is base path aware[2].

    Example:

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

    Note: additional parameters can be supplied by passing an associative array of parameter names and values as a second argument of pathFor() like: $this->router->pathFor('viewPost', ['id' => 1]);.

    The router’s pathFor() method accepts two arguments:

    1. The route name
    2. Associative array of route pattern placeholders and replacement values[3]

    References:

    1. Changed Redirect
    2. urlFor() is now pathFor() in the router
    3. Route names
    0 讨论(0)
  • 2020-12-14 03:08

    Slim 3

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

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

    0 讨论(0)
  • 2020-12-14 03:09

    give your '/' route a name,

    $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();
    

    This should give you the correct url to redirect

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

    0 讨论(0)
  • I think I faced a similar problem, and the issue was with my .htaccess config file. It should actually be something like this:

    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 讨论(0)
提交回复
热议问题