laravel基础速记

<html>

<head>…</head>

<body>@yield(content)</body>

</html>

其中@yield(‘content’)部分是特殊的blade命令,让子页面可以在这里注入自己的内容以扩展布局

 

@extends(layout.app)

@session(‘content’)

<div>

@include(common.errors)

<form>

{{csrf_field}}

</form>

</div>

@endsession

注:首先@session会告知blade,我们使用了哪的布局。所有@session(content)及@endsession之间的内容都会被注入到布局中的@yield(‘ocntent’)位置里

 

 

Route::post(‘/task’,function(Request $request){

$vaildator=Validator::make($request->all(),[

‘name’=>’requird|max:255’,

]);

If($vailator->fails()){

Return redirect(‘/’)

->withInput()

->withErrors($vaildator)

}

});

注:name为必填字段而且必须少于255字符。如果验证失败我们将用户重定向会回/ url,并将旧的输入及错误消息闪存到session中

 

 

 

增加实际的删除逻辑,我们可以使用Eloquent的findOrFail方法通过ID来获取模型,当模型不存在时则会抛出404异常,一旦我们成功获取到模型,我们就可以使用delete方法来删除该条记录,只要该记录被删除,我们便会把用户重定向回/ URL

Route::delete(‘/task/{id}’,function($id){

Task::findOrFail($id)->delete();

Return redirect(‘/’);

});

 

路由参数

必选参数:

Route::get(‘user/{id}’,function($id){

Return ‘User’.$id;

})

 

可选参数

Route::get(‘user/{name}’,function($name=null){

Return $name;

});

 

正则表达式限制参数

Route:get(‘user/{name}’,function($name){

})

->where(‘name’,’[A-Z a-z]+’);

 

 

Route::get('user/{id}/{name}', function ($id, $name) {

})

->where(['id' => '[0-9]+', 'name' => '[a-z]+']);

 

路由中间件

指定中间件到所有群组内的路由中,则可以在群组属性数组中使用middleware参数

中间件将会参照列表指定的顺序运行

Route::group([‘middleware’=>’auth’],function(){

Route::get(‘/’,function(){

});

Route::get(‘user/profile’,function(){

});

})

命名空间

指定相同的PHP命名空间给控制器群组

Route::group([‘namespace’=>’Admin’],function(){

Route::group([‘namespace’=>’User’],function(){

});

});

路由前缀

Route::group([‘prefix’=>’admin’],function(){

Route::get(‘users’,function(){

});

});

 

CSRF保护

Laravel 提供简单的方法保护你的应用程序不受到 跨网站请求伪造 攻击。

跨网站请求伪造是一种恶意的攻击,破坏份子伪造 已通过身份检验的用户身份 来运行未经授权的命令。

 

Laravel 会自动生成一个 CSRF token 给每个用户的 Session。

该 token 用来验证用户是否为实际发出请求的用户。

可以使用 csrf_field 辅助函数来生成一个包含 CSRF token 的 _token 隐藏表单字段:

 

<?php echo csrf_field(); ?>

csrf_field 辅助函数会生成以下的 HTML:

 

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">

当然,也可以在 Blade 模板引擎 中使用:

 

{{ csrf_field() }}

你不需要手动验证 POST、PUT 或 DELETE 请求的 CSRF token。

VerifyCsrfToken HTTP 中间件 将自动验证请求与 session 中的 token 是否相符。

 

 

中间件

http中间件提供了一个方便的机制来过滤进入应用程序的http请求,例如,Auth中间件验证用户的身份,如果用户未通过验证,中间件将会把用户导向登录界面,反之,当用户通过了身份验证,中间件将会通过此请求并接着往下执行

创建中间件的命令

Php artisan make:middleware AgeMiddleware

 

Class AgeMiddleware{

Public function handle($request,Closure $next){

If($request->input(‘age’<=200){

Return redirect(‘home’);}

Return $next($request);

}

}

为路由指派中间件

如果要指派中间件给特定的路由,你得先在app/http/kernel.php给中间件设置一个键,默认情况下,这个文件的$routeMiddleware属性已包含了laravel目前设置的中间件,只需要在清单列表中加一组自定义的键即可

protected $routeMiddleware = [

    'auth' => \App\Http\Middleware\Authenticate::class,

    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,

    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,

    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,

];

 

中间件一旦在kernel中被定义,即可在路由选项内使用middleware键值指定

Route::get(‘admin/profile’,[‘middleware’=>’auth’,function(){

}]);

使用一组数组为路由指定多个中间件

Route::get(‘/’,[‘middleware’=>[‘first’,’second’],function(){

}]);

 

除了使用数组外,也可以在路由的定义之后链式调用middleware方法

Route::get(‘/’,function(){

})->middleware([‘first’,second]);

 

 

 

转载于:https://my.oschina.net/u/3304754/blog/858100

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值