-
Redirect catre actiunea unui Controller
-
Redirect cu date in Session
-
Redirectionare in metoda Constructor
Exista mai multe metode de a face redirect in Laravel. Cea mai simpla metoda este cu functia
redirect().
Route::get('noprofile', function(){
return redirect()->to('user/profile');
});
Sau:
Route::get('noprofile', function(){
return redirect('user/profile');
});
Exista de asemenea o functie
back() pentru a redirectiona utilizatorul la locatia anterioara.
Route::post('user/profile', function(){
// Validate the request...
return back()->withInput();
});
Redirectionare un anumit Route
Fiecare Route poate avea un nume specific. Numele poate fi dat folosind metoda
name()
- Exemplu:
1. In
routes/web.php creaza un route pentru pagina "
/test" cu numele "
testing".
Creaza inca un route pentru "
/redirect" care va redirection request-ul la ruta numita "
testing".
Route::name('testing')->get('/test', function(){
return 'Life is an effect, the cause is Love.';
});
Route::get('redirect',function(){
return redirect()->route('testing');
});
2. Acceseaza in browser urmatoarea adresa pentru a testa exemplu cu nume la Route.
//localhost:8000/redirect
Dupa executarea URL-ului de mai sus, vei fi redirectional la
//localhost:8000/test , loatia route-ului numit "
testing".
Daca route-ul are parametri, poti sa ii adaugi intr-un array ca al doilea argument a metodei route().
// For a route with the following URI: profile/{id}
return redirect()->route('profile', ['id'=>1]);
Redirect catre actiunea unui Controller
Pentru a redirectiona catre actiunea unui controller, pune controller-ul si numele metodei la functia
action().
return redirect()->action('HomeController@index');
Daca ruta la controller necesita parametri, poti sa ii ad] intr-un array ca al doilea argument al metodei action():
return redirect()->action('UserController@profile', ['id'=>1]);
Redirect cu date in Session
Daca vrei sa transmitu un mesaj la pagina unde utilizatorul este redirectionat, de exemplu dupa efectuarea cu succes a unei actiuni, poti folosi metoda
with() pentru a adauga mesajul intr-o sesiune.
Route::post('user/profile', function(){
// Update the user's profile...
return redirect('dashboard')->with('status', 'Profile updated!');
});
Dupa ce utilizatorul este redirectiona, poti afisa mesajul din sesiune. De exemplu, folosind
formatul Blade:
@if(session('status'))
<div class="alert-success">
{{ session('status') }}
</div>
@endif
Dupa redirect, sesiune creata cu metoda with() este automat stearsa din "session".
Redirectionare in metoda Constructor
Pentru a face
redirect() dintr-un __constructor() al unui controller, pentru a fi sigur ca redirect-ul este efectuat, fara a executa alta metoda, foloseste:
redirect()->send().
Daca vrei sa faci o redirectionare in
__construct() in functie de o sesiune, foloseste metoda
$this->middleware() in constructor, cu codul pentru redirectionare intr-o functie callback, ca in acest format.
public function __construct(){
$this->middleware(function($request, $next){
//Your code with Session, for redirect
return $next($request); //<- this is required
});
}
- Exemplu, o bucata de cod dintr-un controller. Daca sesiune 'admin_logg' nu exista, va redirectiona la '/'; metoda test() nu va fi executata:
public function __construct(Request $request){
//this Closure is needed because it is used session in __construct
$this->middleware(function($request, $next){
if(!session()->has('admin_logg')){
return redirect('/')->send();
}
return $next($request);
});
$this->test();
}
public function test(){
echo 'Laravel tutorial';
}