一、路由
/**
* 定义一个/hi地址,返回hi的view
*/
Route::get('/hi', function()
{
return View::make("hi");
});
/**
* 定义一个/hello地址,带参数,默认参考值为Robin
* 地址访问如:/hello/myname
*/
Route::get("/hello/{name?}", function($name = "Robin"){
return "Hello " . $name;
});
/**
* 定义一个地址:/test/2222
* 使用正则匹配参数id
*/
Route::get("/test1/{id}", function($id) {
return "ID value = " . $id;
})->where("id", "\d+");
/**
* 定义一个地址:/test2/123/robin
* 使用正则匹配多个参数
*/
Route::get("/test2/{id}/{name}", function($id, $name){
return "ID = " . $id . ", Name = " . $name;
})->where(["id"=>"\d+", "name"=>"[a-zA-Z]+"]);
/**
* 定义一个/as/my地址,给此路由加一个别名为mm
*/
Route::get("/as/my", ["as" => "mm", function(){
// 输入当前路由的名称,如果路由没有给指定别名,返回空值
return Route::currentRouteName();
}]);
//------------------------------------------------------------------
// 测试POST提交
//------------------------------------------------------------------
Route::get("/test", function(){
return View::make("test");
});
Route::post("/test3", function(){
// 取得POST的test文本框输入值
//return $_POST["test"];
// 取得所有POST的内容
//return Input::all();
// 取得指定文本框的输入值
return Input::get("test");
});
//------------------------------------------------------------------
// 测试预定义PID为整型
//------------------------------------------------------------------
$router->pattern("pid", "\d+");
Route::get("/test4/{pid}", function($pid) {
return "Pattern ID = " . $pid;
});
二、中间件
1,创建一个中间件
#在 /app/Http/Middleware 目录下生成一个TestMiddleware.php 的中间件
php artisan make:middleware TestMiddleware
#编辑TestMiddleware类的内容
public function handle($request, Closure $next)
{
if($request->input('age')<18) //限制年龄小18岁的不能访问
return redirect()->route('refuse');
return $next($request);
}
2,注册一个中间件
创建完之后,我们要到 /app/Http/Kernal.php 中注册这个中间件,给他起个名字叫test:
#打开/app/Http/Kernal.php文件,追加TestMiddleware到Kernel的$routeMiddleware属性:
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'test' => \App\Http\Middleware\TestMiddleware::class,
];
3,开始使用中间件
Route::group(['middleware'=>'test'],function(){
Route::get('/write/laravelacademy',function(){
//忽略这里
});
Route::get('/update/laravelacademy',function(){
//忽略这里
});
});
Route::get('/age/refuse',['as'=>'refuse',function(){
return "十八禁!";
}]);
上面这段代码,我们访问 http://localhost//update/laravelacademy/1 的时候,页面会输出“ 十八禁!” 这时候已经自动跳转到 http://localhost/age/refuse 路由器上了。
注意上面用的是group 组路由,就是把多个路由做成一个集合,共用一点规则, group 里第一个参数是一个数组(php新版的写法方括号),里面给这个组绑定了一个 middleware 叫 test ,这个test 就是我们刚刚生成的中间件啦,这时候,中间件已经应用到 这个路由组里了。