昨天我們學習了seeder,相信各位的laravel中都已經有百萬大軍了吧!我們今天來寫時間判斷吧,時間判斷可以用在許多層面之中,雖然今天我們只是用來判斷活動報名,但是如果之後有需要也可以使用。
那我們要判斷時間我們需要用到,carbon
這個套件。
我們先來介紹carbon,他是一種簡易的PHP API extension for DateTime,他讓你可以用簡單的方式去計算時間,各種你需要的判斷式:等於、小於、大於以及更多。
那我們若要在laravel中使用,我們不需要另外下載只需加入他的函式庫就可以使用了:
use Carbon\Carbon;
若是有需要更多carbon相關的資訊,可以到他的官網去看看,裡面也有介紹許多我們沒有用到的方法(https://carbon.nesbot.com/docs/ )。
那我們的carbon會用在article中用來判斷我們的活動是否正處於可以報名的時間,那我們先到article的controller中去看看吧,app\Http\Controllers\ArticleController.php
:
/**
* Display the specified resource.
*/
public function show(Article $article)
{
$startDate = $article -> start_time;
$endDate = $article -> end_time;
$isdate = Carbon::now()->between($startDate,$endDate);
return view('articles.show', ['article' => $article, 'isdate' => $isdate] );
}
要記得把算完的布林值傳去前端。
Carbon::now()
是用來取得今天的時間,他也用另外一個用法:$carbon = new Carbon();
這也是取得今天日期的方法,我們在定義時我們也可以加入台灣的時區Carbon::now('Asia/Taipei')
,再來是之後的between則是將開始的日子和結束的時間放入判斷列中,去判斷前面的參數是否在兩者之間。
那我們介紹完就可以到blade當中去判斷報名時間,那我們先到resources\views\articles\show.blade.php
:
@auth
@if(auth() -> user() -> joinArticles -> find($article -> id))
<div class=" ">
<form method=" " action="{{ route('joiners.edit', $article) }}">
@csrf
<button class="px-3 py-1 rounded bg-indigo-150 text-white hover:bg-indigo-250"> {{__("修改報名資料")}} </button>
</form>
</div>
@else
@if($isdate)
<div class=" ">
<form method=" " action="{{ route('joiners.create') }}">
@csrf
<button name="article" value="{{ $article->id }}" class="px-3 py-1 rounded bg-indigo-150 text-white hover:bg-indigo-250"> {{__("我要報名!")}} </button>
</form>
</div>
@else
<div class="">
<form method=" " action="{{ route('joiners.create') }}">
@csrf
<button name="article_id" value="{{ $article->id }}" disabled class="px-3 py-1 rounded bg-indigo-125 text-white "> {{__("我要報名!")}} </button>
</form>
<p class = "text-sm text-red-500 py-2 ">{{ __("*現在不是報名期間") }}</P>
</div>
@endif
@endif
@else
@if($isdate)
<div class=" ">
<form method=" " action="{{ route('joiners.create') }}">
@csrf
<button name="article" value="{{ $article->id }}" class="px-3 py-1 rounded bg-indigo-150 text-white hover:bg-indigo-250"> {{__("我要報名!")}} </button>
</form>
</div>
@else
<div class="">
<form method=" " action="{{ route('joiners.create') }}">
@csrf
<button name="article_id" value="{{ $article->id }}" disabled class="px-3 py-1 rounded bg-indigo-125 text-white "> {{__("我要報名!")}} </button>
</form>
<p class = "text-sm text-red-500 py-2 ">{{ __("*現在不是報名期間") }}</P>
</div>
@endif
@endauth
這邊先判斷有沒有報名過,如果有就讓他編輯,若是沒有還要多判斷一次是否在報名期間內,若是有則可報名若是無,我們將按鈕鎖起來,並在底下增加一行紅色的提示字「*現在不是報名期間」,去提醒使用者現在無法報名。
那這樣我們就完成了時間判斷的方式,今天的概念也不難,但是在判斷式的地方就必須稍微花時間去釐清邏輯,因為有些複雜,沒有看懂的朋友們可以多花一些時間去想想,那我們明天要看看footer我們怎麼實作,讓別人可以在你的網頁中清楚地找到如何聯絡你,也可以在底下放一些資訊使得你的網站變得更加的完整,那我們明天見,掰掰!