iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
Modern Web

Laravel實作 —系列 第 28

[Day 28] Laravel實作 -- 闖進阿鼻讓他們過上守時的生活

  • 分享至 

  • xImage
  •  

昨天我們學習了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我們怎麼實作,讓別人可以在你的網頁中清楚地找到如何聯絡你,也可以在底下放一些資訊使得你的網站變得更加的完整,那我們明天見,掰掰!


上一篇
[Day 27] Laravel實作 -- 下葬的是希望的seeder,還是我枯竭的屍體
下一篇
[Day 29] Laravel實作 -- footer是世界最後一顆北瓜
系列文
Laravel實作 —30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言