Laravel 514 + Bootstrap 334 Note 2: Laravel Routing

WBOY
Release: 2016-07-30 13:31:50
Original
955 people have browsed it

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';
});
Copy after login
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');
});
Copy after login
Create the view file: home.php in the directory resources/views, with the following content:
<html>
<body>
<h1>home</h1>
</body>
</html>
Copy after login
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' => '张三']);
});
Copy after login
Modify the view code:
<html>
<body>
[<?php echo $name; ?>],您好!
</body>
</html>
Copy after login
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' => '张三']);
});
Copy after login
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;
});
Copy after login
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;
});
Copy after login
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;
});
Copy after login
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]+');
Copy after login
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]+']);
Copy after login
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);
    }
Copy after login

Modify the routing code in the above example to:

Route::get('new/{id}', function($id)
{
    return '新闻ID:'.$id;
});
Copy after login
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;
    }
});
Copy after login

in routes.php

use Illuminate\Http\Request;
Copy after login

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.

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!