Laravel 关于目录或文章不存在的报错代码
今天整理一天的部署上线没完成。不过晚上搞了一个目录或者文章报错代码。
1、创建路由
直接将其创建在了Home前台indexController.php主页控制器上。
Route::get('/errors/nothing','Home\indexController@nothing');
2、创建控制器
在indexController.php文件中创建函数:
public function nothing()
{
return view('errors.nothing');
}
在创建函数后,先测试路由是否打通,打通后创建报错视图文件。
3、建立报错模板
建立nothing.blade.php报错文件。
<html>
<head>
<title>对不起,不存在!</title>
<link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css">
<style>
html, body {
height: 100%;
}
body {
margin: 0;
padding: 0;
width: 100%;
color: #B0BEC5;
display: table;
font-weight: 100;
font-family: 'Lato';
}
.container {
text-align: center;
display: table-cell;
vertical-align: middle;
}
.content {
text-align: center;
display: inline-block;
}
.title {
font-size: 72px;
margin-bottom: 40px;
}
</style>
</head>
<body>
<div class="container">
<div class="content">
<div class="title">对不起,不存在!</div>
</div>
</div>
</body>
</html>
直接在地址栏中运行
blog/errors/nothing
显示运行正常。
4、创建中间件
利用composer创建中间件:
php artisan make:middleware CheckAge
创建完成后
撰写内容
public function handle($request, Closure $next)
{
$_arti=Article::where('art_id',$request->art_id)->find($request->art_id);
if (!$_arti){
return redirect('errors/nothing');
}
return $next($request);
}
5、在路由上增加中间件功能
Route::get('/a/{art_id}','Home\IndexController@article')->middleware('checkArt');
测试通过。
6、后记
在创建中间件时候,确实测试了好多代码。
显示看网上如何判断空结果集。
即使取到的空结果集, Eloquent仍然会返回IlluminateDatabaseEloquentCollection对象实例。这个我曾经也测试过,确实dd()测试之后含有结果集输出,只是输不了数据库中的字段内容,所以采用if()字段判断时,依然失效。
其实,Eloquent已经给我们封装几个判断方法。
$result = Model::where(...)->get();
//不为空则
if ($result->first()) { }
if (!$result->isEmpty()) { }
if ($result->count()) { }
但是使用->get()显示这是一个无定义字段,后来发现find()可以使用,具体原因待好好看手册再分析。
参考:
在Laravel Eloquent 判断取出的结果集是否为空http://www.cnblogs.com/wuoshi...和Eloquent collection: counting and detect empty http://stackoverflow.com/ques...中表明: