路由导航到控制器的方法
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的名字和方法的名字是传值关系,命名可以不同
路由参数一定要用{}包括