Home  >  Article  >  Backend Development  >  Laravel 514 + Bootstrap 334 Note 2: Laravel Routing

Laravel 514 + Bootstrap 334 Note 2: Laravel Routing

WBOY
WBOYOriginal
2016-07-30 13:31:50954browse

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';
});
Open the browser to access: http://localhost:801/hw, as shown below:


2.2 Route to return the view

Add the following code segment to the above code:

Route::get('/home', function () {
    return view('home');
});
Create the view file: home.php in the directory resources/views, with the following content:
<html>
<body>
<h1>home</h1>
</body>
</html>
Open the browser and visit: http://localhost:801/home


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' => '张三']);
});
Modify the view code:
<html>
<body>
[<?php echo $name; ?>],您好!
</body>
</html>
Look at the effect of the visit again:

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' => '张三']);
});
You can still open the page normally when you visit again.

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;
});
Open the browser and visit: http://localhost:801/user/jack

What if there are two parameters? Woolen cloth? Modify the routing code:

Route::get('user/{name}/{age}', function($name,$age) {
    return '用户姓名:'.$name.',年龄:'.$age;
});
Open the browser and visit: http://localhost:801/user/jack/23


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;
});
Access address: http://localhost:801/user/jack

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]+');
Open the browser to access http://localhost:801/new/3 like this:


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]+']);
The access effect will not be demonstrated here.
In addition, we can configure global restrictions, open the file: app/Providers/RouteServiceProviders.php, and modify the boot method as follows:
    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;
});
The access effect is the same as the above example and will not be demonstrated here.

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

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.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn