1. 路由设置
路由文件位于app/Http/routes.php
,本文中假设Laravel安装在 /laravel
目录下。
路由的作用是把请求转换到对应的控制器(Controller)去。
2. 基本路由
2.1. GET方式
// 设置GET方式路由
Route::get('/basic1', function () {
return 'Get Hello World';
});
// 在浏览器中访问:http://localhost/laravel/public/basic1
2.2. POST方式
// 设置POST方式路由
Route::post('/basic2', function () {
return 'Hello World';
});
调用POST方式的请求示例文件,采用AJAX:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="http://cdn.bootcss.com/jquery/2.2.2/jquery.min.js"></script>
</head>
<body>
<script>
$('document').ready(function(){
$('#btnPost').click(function(){
var postData = {};
// 这个网址就是响应ajax的网址
$.post('http://localhost/laravel/public/basic2', postData, function(data) {
$('#text').html(data);
});
});
});
</script>
<div id="text"></div>
<a href="javascript:void(0)" id="btnPost">POST</a>
</body>
</html>
2.3. 多种请求方式响应
// 响应 GET 和 POST 这2种方式
Route::match(['get', 'post'], '/', function () {
return 'Get & POST Hello World';
});
// 响应任意方式的Request
Route::any('foo', function () {
return 'Any method Hello World';
});
3. 路由参数
我们在访问京东商场的时候,我们往往会访问类似的网址:
https://item.jd.com/1250987.htm
我们知道,这个网址其实是伪静态,1250987是商品的id,是个参数。
3.1. 路由参数
// 设置路由参数
Route::get('user/{id}', function($id){
return 'User-Id-' . $id;
});
// 在浏览器中访问:http://localhost/laravel/public/user/11
3.2. 路由参数可选
// 设置路由参数
Route::get('user/{name?}', function($name = 'Martin'){
return 'User-Name-' . $name;
});
// 在浏览器中访问:http://localhost/laravel/public/user/11
3.3.正则表达式来限制输入参数
// 正则表达式来设置路由
// id必须是数字
Route::get('user/{id}', function($id){
return 'User-Id-' . $id;
})->where('id', '[0-9]+');
// name必须是字母,大小写都行
Route::get('user/{name?}', function($name = 'Martin'){
return 'User-Name-' . $name;
})->where('name', '[A-Za-z]+');
3.4. 多个路由参数
// 多个参数的情况
Route::get('user/{id}/{name?}', function($id, $name = 'Martin'){
return 'User-id-' . $id . '-name-' . $name;
})->where(['id'=>'[0-9]+', 'name'=>'[A-Za-z]+']);
4. 路由别名
在开发的过程中,不可避免的是会改变路径的名称。于是路由别名就有了大大的用处,举例如下:
- 设置一个路由参数
user/member-center
Route::get('user/member-center', ['as' => 'center', function(){
return 'member-center';
}]);
Route::get('user/center',function(){
return redirect()->route('center');
});
- 这时,由于需求改变,需要把
user/member-center
改成user/center123
Route::get('user/center123', ['as' => 'center', function(){
return 'member-center';
}]);
Route::get('user/center',function(){
return redirect()->route('center');
});
这样的话,访问 user/center
还是可以访问到 return 'member-center'
5. 路由群组
// 路由群组
Route::any('multy2', function() {
return 'multy2';
});
访问:http://localhost/laravel/public/multy2
返回:multy2
Route::group(['prefix' => 'member'], function() {
Route::get('user/center', function() {
return 'Fuck you';
});
Route::any('multy2', function() {
return 'member - - multy2';
});
});
访问:http://localhost/laravel/public/member/multy2
返回:member - - multy2
6. 路由中输出视图
视图的路径位于:resources/views
// 路由返回视图
Route::any('get_view', function() {
return view('welcome');
});