今天整理一天的部署上線沒完成。不過晚上搞了一個目錄或者文章報錯程式碼。
1、建立路由
直接將其建立在了Home前臺indexController.php主頁控制器上。
Route::get(`/errors/nothing`,`HomeindexController@nothing`);
2、建立控制器
在indexController.php檔案中建立函式:
public function nothing()
{
return view(`errors.nothing`);
}
在建立函式後,先測試路由是否打通,打通後建立報錯檢視檔案。
3、建立報錯模板
建立nothing.blade.php報錯檔案。
<!DOCTYPE html>
<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}`,`HomeIndexController@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…中表明: