Quelle per il Web sono in web.php
Di base una rotta è:
<?php Route::get('/', function () { return view('welcome'); }); ?>
senza parametri nell'URL richiama la vista welcome.
Per comporre URL con multi parametri, si usa la sintassi:
<?php Route::get('/{name?}/{lastname?}', function ($name = "", $lastname = "") { return "<h1>Ciao ".$name." ".$lastname; }); ?>
Il punto di domanda indica che il parametro è opzionale quindi serve impostare il valore di default nella function.
Per creare filtri sul tipo di parametro, si usa il where ed una espressione regolare. Nell'esempio si può imporre che i due parametri siano solo testo.
<?php Route::get('/{name?}/{lastname?}', function ($name = "", $lastname = "") { return "<h1>Ciao ".$name." ".$lastname; })->where("name","[a-zA-Z]+")->where("lastname","[a-zA-Z]+"); ?>
E' possibile passare alla where un array di espressioni regolari:
<?php Route::get('/{name?}/{lastname?}/{age?}', function ($name = "", $lastname = "", $age = 0) { return "<h1>Ciao ".$name." ".$lastname." di ".$age." anni"; })->where([ "name" => "[a-zA-Z]+", "lastname" => "[a-zA-Z]+", "age" => "[0-9]{1,3}" ]); ?>
Avere tante rotte con logica è sconveniente perché il file potrebbe crescere in complessità quindi conviene passare direttamente all'uso dei controller. Per creare un controller potete fare a mano oppure usare il comando:
php artisan make:controller LoginController
Aggiungiamo un metodo login:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class LoginController extends Controller { // public function login() { return "Sono il login"; } }
e nella route creiamo la rotta di default che punta a tale metodo del controller:
<?php Route::get('/', "LoginController@login"); ?>
E' buona cosa farsi sempre dare la Request nel controller, così da averlo a disposizione nel caso ci serva per della logica. Per farlo basa mettere:
public function login(Request $req)
GET /isigym/public/ HTTP/1.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7 Cache-Control: max-age=0 Connection: keep-alive Cookie: admin_auth=eyJpdiI6ImNxWkQxemFkdXJjZjROVlIzbFFlV0E9PSIsInZhbHVlIjoiNEc3SWV0ZmVTV0FqaHhcL2RYNHZrWGR5RGZ0N3c4Z3VISHFHeHk0QmNxTkNZQXo5dEhYUjU1RFNLVzQ2ZzlxWnBIVTJRcVhManNLZksrd2hZc25NNXkzM2k2d2NJc3dCaHAwRnVSZUtxUmtiRXJzdXErYTJmdWoxcjJNcHB4NU5kIiwibWFjIjoiZmU5OTU0YzQzMTgwMTdmOGUyOTlhMjc0ZDNkOWE2ZGFiN2M5YmFlM2M3ODQ0NzNiZTU3OGUzODdkZmEwNDk5MCJ9; XSRF-TOKEN=eyJpdiI6IkJMQ3NaOE9Qais2MkRWR1J0SWFhT1E9PSIsInZhbHVlIjoiTVZSNVU1RW96U2dhOGpLZGh6cDhnYWMrbjd6SGh1ZXZ0TExyWnowVWhkc1BjNXNRdUpHS2dUM3FPSFZNWFRwb0w0d3RUbjM0MzdoOGlVRVUzQ0RKalE9PSIsIm1hYyI6ImVkM2MzY2JlYjY4YjQ2NThkMjZkZjU2ZDZjOTZiMTc1ODc1ZjdjYTczMGMyN2VmZTQyMjBiM2EzZDdkZGM0YTUifQ%3D%3D; laravel_session=eyJpdiI6InFjTzlhQVZEcUZHXC9tMkZ2Y1ZVc1hRPT0iLCJ2YWx1ZSI6IndMMFl6eDBqcHJpeFlabzByb0I1ZFB4TndPQlduOGFES29UdFNDM1pQRWQySTNJXC9kNUR1cmxqRUdkOWVTUFdtbk03a1BDUlJpRDFuREJlTUNcL3BrZlE9PSIsIm1hYyI6ImY0MWRlMzM4NjQyZTIzMmM1YmU5YWQ0MDA5MDg4M2MzYzY0NTZmZDMwZjIwNzFkOGI5NTI3YWQxY2U4OGJjYjMifQ%3D%3D Host: localhost Referer: http://localhost/isigym/ Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36 Cookie: admin_auth=; XSRF-TOKEN=GMaKfvlv6SnV7prIixE25tWIaZf8U7m5rTaS9knX; laravel_session=OAPI84csT9lfBS0mKiu698ohwXFb8zoVTo7Zr9G9
Analogamente a sopra, possiamo passare parametri di URL al controller semplicemente usando la sintassi sopra per la route e censendo il parametro nel metodo del controller
Route::get('/{username?}', "LoginController@login");
public function login($username = "", Request $req) { return "Sono il login di ".$username; }
I parametri in GET che possono cambiare, non vanno censiti nella rotta ma vengono letti direttamente dal metodo del controller grazie proprio alla Request.
<?php public function login($username = "", Request $req) { $lang = $req->input("lang"); return "Sono il login di ".$username." in lingua ".$lang; } ?>
http://localhost/site/public/Emiliano?lang=it
dsda
Nessun commento:
Posta un commento