Le direttive della rotta di Laravel accettano effettivamente una stringa come secondo parametro:
Route::get('/user', 'UserController@index');
Questo viene analizzato dal router Laravel per chiamare l'azione desiderata nel controller desiderato e quindi iniettare qualsiasi cosa il controller di azione ritorni nella risposta effettiva all'utente.
Tuttavia, i controller di azione possono restituire diverse cose: viste, reindirizzamenti, stringhe, json e così via.
Se dovessi semplicemente inserire una semplice stringa intesa come nome di vista, il router dovrà sapere che la stringa è un nome di vista (e non un controller@action
, o un reindirizzamento, o una semplice stringa .. .).
Il callback in stile di chiusura offre flessibilità e un processo decisionale più semplice nel parser.
La chiusura fornita nella tua domanda è piuttosto semplice: restituisci la vista con nome. È possibile scrivere alcune risposte piuttosto complesse:
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId)
{
// of course, you'd have to write something to get data from your models and inject into a view
});
O anche, meglio (grazie al binding implicito):
Route::get('posts/{post}/comments/{comment}', function (App\Post $post, App\Comment $comment)
{
return View::make('blog.comment', [
'comment' => $comment
]);
});
Per ottenere lo stesso risultato utilizzando le stringhe, è necessario un footprint del metodo più complesso per la direttiva route.