读一读

路由导航到控制器的方法

Route::get('/test','控制器@方法');

laravel和thinkphp不同,前者都是通过路由来定义访问的。而thinkphp可以通过控制器方法名直接访问


Route::get('user/{id}',function(){})->where('id','[0-9]+');

使用where来约束,同样的where的参数可以为数组,多个约束[]


postman工具 谷歌插件

用来调试路由最好了


laravel的要求

php版本5.59以上,wamp2.5以上,mysql最后5.6+


创建laravel项目

先安装composer,要指定php目录

先cd到指定的目录

composer create-project laravel/laravel 项目名 --prefer-dist

后面prefer-dist指的是压缩版


资源路由,一下子就创建一大堆路由,为方法创建不同的路由。

Get-index         Post-store

Route::resource('名字',控制器名)

route(名字.方法)对应的就是控制器相应的方法


laravel CSRF防护理

CSRF叫做跨站请求伪造

提供了一个csrf token来验证

在视图的表单form区域中添加 {!! csrf_fields() !!}


不是所有都要经过CSRF验证

在app/Http/Middleware/VerifyCsrfToken.php将要排除不需要验证的路由添加到$except中,'pay/*'表示pay下面所有的子路由


laravel定义中间件

php artisan make:middleware CheckAge

会在app/Http/Middleware下创建CheckAge中间件

class CheckAge
{
    public function handle($request, Closure $next, $guard = null)
    {
        $age = $request->get('age');
        if ($age < 18) {
            return "不满18不能进";
        }

        return $next($request);//进入你要访问的页面
    }
}

在app/Http/Kernal.php,注册这个中间件

添加到$routeMiddleware数组中,'test'=>App\Http\Middleware\CheckAge::class,


Route::get('name',['as'=>'名字',function...]);//使用as关键字
Route::get('name',function()...)->name('名字');//链式指定

这样就可以通过route(名字)得到url

//路由分组
Route::group(['as'=>名字,'prefix'=>路由组前缀],function(){
    Route::get('name',...);//子路由
});

访问用 组名::路由名


laravel5.1路由在app/Http/routes.php中

而5.4在根目录的routes/web.php(一般用这个)


定义普通路由url/hello访问

Route::get('/hello',function(){return view});


有效路由有get post put patch delete options

Route::match(['get','post'],'/hello',function...);//match可以响应多种请求
Route::any("name",function...);//表示匹配所有请求

Route::get('hello'/{na},function($na)..);//必选参数
Route::get('hello'/{name?},function($na=chicai)..);//可选参数

url的名字和方法的名字是传值关系,命名可以不同

路由参数一定要用{}包括