Redirecionamento HTTP
Para usar primeiro adicione Inphinit\Experimental\Http\Redirect
no seu arquivo, algo como isto:
<?php
use Inphinit\Experimental\Redirect;
Redirecionando para um caminho na aplicação
Se a sua aplicação estiver no “root” do servidor, quando acessar http://localhost/
irá ser redirecionado para http://localhost:9000/baz
:
<?php
use Inphinit\Routing\Route;
use Inphinit\Experimental\Http\Redirect;Route::set('GET', '/', function () {
Redirect::to('baz'); //irá redirecionar para http://localhost/baz return 'Olá, mundo'; //será processado
});
Se a sua rota for /user/
e acessar http://localhost/user/
<?php
use Inphinit\Routing\Route;
use Inphinit\Experimental\Http\Redirect;Route::set('GET', '/user/', function () {
Redirect::to('baz'); //irá redirecionar para http://localhost/user/baz return 'Olá, mundo'; //será processado
});
Se a sua rota for /user/
and add prefix /
irá ser redirecionado para http://localhost/baz
:
<?php
use Inphinit\Routing\Route;
use Inphinit\Experimental\Http\Redirect;Route::set('GET', '/user/', function () {
Redirect::to('/baz'); //irá redirecionar para http://localhost/baz return 'Olá, mundo'; //será processado
});
Se sua aplicação não estiver na “root” do servidor, por exemplo http://localhost/mysite/
, irá ser redirecionado para http://localhost/mysite/baz
:
<?php
use Inphinit\Routing\Route;
use Inphinit\Experimental\Http\Redirect;Route::set('GET', '/', function () {
Redirect::to('baz'); //irá redirecionar para http://localhost/mysite/baz return 'Olá, mundo'; //será processado
});
Se a sua rota for /user/
e acessar http://localhost/mysite/user/
irá ser redirecionado para http://localhost/mysite/user/baz
:
<?php
use Inphinit\Routing\Route;
use Inphinit\Experimental\Http\Redirect;Route::set('GET', '/user/', function () {
Redirect::to('baz'); //irá redirecionar para http://localhost/mysite/user/baz return 'Olá, mundo'; //será processado
});
Se acessar http://localhost/mysite/user
irá ser redirecionado para http://localhost/mysite/foo
:
<?php
use Inphinit\Routing\Route;
use Inphinit\Experimental\Http\Redirect;Route::set('GET', '/user/', function () {
Redirect::to('/foo'); //irá redirecionar parahttp://localhost/mysite/foo return 'Olá, mundo'; //será processado
});
Note que isto não irá redirecionar para fora do caminho da aplicação
Apenas redirecionar
Para parar a aplicação quando redirecionar use o método Inphinit\Experimental\Redirect::only
:
<?php
use Inphinit\Routing\Route;
use Inphinit\Experimental\Http\Redirect;Route::set('GET', '/', function () {
Redirect::only('baz'); //irá redirecionar parahttp://localhost/baz custom_function(); //NÃO será processado return 'Olá, mundo'; //NÃO será processado
});
Redireciona para um Controller
Se um controller for definido para uma rota você pode redirecionar usar o método Inphinit\Experimental\Routing\Redirector::action
, se acessar http://localhost/redirecionamento
irá ser redirecionado para http://localhost/foo/bar/baz
:
<?php
use Inphinit\Routing\Route;
use Inphinit\Experimental\Routing\Redirector;Route::set('GET', '/foo/bar/baz', 'MeuControllador:acao');Route::set('GET', '/redirecionamento', function () {
Redirector::action('MeuControllador:acao'); //irá redirecionar para http://localhost/foo/bar/baz
});
Redireciona para uma rota com regex passando argumentos:
Route::set('GET, '/user/{:[\w\-]+:}/{:\d+:}', 'MeuControllador:acao');//se acessar http://localhost/redirecionamento-1
Route::set('GET', '/redirecionamento-1', function () { //irá redirecionar para http://localhost/user/maria/1001
Redirector::action('MeuControllador:acao', array( 'maria', '1001' ));
});//se acessar http://localhost/redirecionamento-2
Route::set('GET', '/redirecionamento-2', function () { //irá redirecionar para http://localhost/user/joao/1002
Redirector::action('MeuControllador:acao', array( 'joao', '1002' ));
});
Redireciona para uma rota
<?php
use Inphinit\Routing\Route;
use Inphinit\Experimental\Routing\Redirector;Route::set('GET', '/foo', 'MeuControllador:acao');
Route::set('GET', '/bar', 'MeuControllador:acao');Route::set('GET', '/redirecionamento-1', function () {
Redirector::route('/foo'); //irá redirecionar para http://localhost/foo/bar/baz
});Route::set('GET', '/redirecionamento-2', function () {
Redirector::route('/bar'); //irá redirecionar para http://localhost/foo/bar/baz
});Route::set('GET', '/redirecionamento-3', function () {
Redirector::route('/baz'); //Irá emitir uma Exception pois a rota não foi definida
});