1 Routing mechanism
Routing in MVC is a very important function. Its function is:
A. Match the incoming request and the parameters attached to the request according to the user access (URL);
B. Call Request to map the Controller's Action method and pass in the parameters;
C. Return the Action method processing result;
The following figure represents a user request in a simple form:
2 In Laravel Routing
In Laravel 5.1.4, the routing configuration file is app/Http/routes.php.
2.1 Directly return string routing
Append the following code segment after the original code:
Route::get('/hw', function () { return 'Hello World'; });
2.2 Route to return the view
Add the following code segment to the above code:
Route::get('/home', function () { return view('home'); });
<html> <body> <h1>home</h1> </body> </html>
What if the code in the above example needs to pass parameters to the view page? Modify our routing code:
Route::get('/home', function () { return view('home', ['name' => '张三']); });
<html> <body> [<?php echo $name; ?>],您好! </body> </html>
If there are too many views, they are usually stored by module or even by function. Create a new directory in the resources/views directory: public/demo, and then move home.php to this directory.
Modify the routing code in the above example to:
Route::get('/home', function () { return view('public.demo.home', ['name' => '张三']); });
2.3 Routing Parameters
As mentioned before, routing can match the user’s request parameters, so how to match? Append the code snippet to the routing file in the above example:
Route::get('user/{name}', function($name) { return '用户姓名:'.$name; });
What if there are two parameters? Woolen cloth? Modify the routing code:
Route::get('user/{name}/{age}', function($name,$age) { return '用户姓名:'.$name.',年龄:'.$age; });
What if the age parameter is not necessary? Modify the routing code again:
Route::get('user/{name}/{age?}', function($name,$age=null) { return '用户姓名:'.$name.',年龄:'.$age; });
2.4 Constraints on routing parameters
Under normal circumstances, some parameters accessed by users have certain Rules, for example, the user ID when reading user information may be a number, the news ID when modifying news information may be a GUID, etc.
Modify the routes.php file and add the following code:
Route::get('new/{id}', function($id) { return '新闻ID:'.$id; })->where('id', '[0-9]+');
When you can access http://localhost:801/new/abc, the provided page does not exist:
Correspondingly, when multiple parameters are restricted at the same time, you need to use an array , modify the routing code of the above example:
Route::get('new/{id}/{title}', function($id,$title) { return '新闻ID:'.$id.',新闻标题:'.$title; })->where(['id' => '[0-9]+', 'title' => '[a-z]+']);
public function boot(Router $router) { // $router->pattern('id', '[0-9]+'); parent::boot($router); }
Modify the routing code in the above example to:
Route::get('new/{id}', function($id) { return '新闻ID:'.$id; });
2.5 Get routing parameters
You can get routing parameters in routes.php to do other operations. Modify the routing code in the above example:
Route::get('new/{id}', function(Request $request, $id) { if ($request->route('id') == '2') { return '新闻ID是2'; }else{ return '新闻ID不是2,值是:'.$id; } });
in routes.php Insert a new line after php:
use Illuminate\Http\Request;
Open the browser and visit http://localhost:801/new/2 and http://localhost:801/new/3 respectively You can see different page effects.
Routing still has many complex functions that need to be studied.
Copyright Statement: This article is an original article by the blogger and may not be reproduced without the blogger's permission.
The above introduces Laravel 514 + Bootstrap 334 Note 2: Laravel routing, including aspects of content, I hope it will be helpful to friends who are interested in PHP tutorials.