iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0
自我挑戰組

PHP框架-Laravel自學挑戰系列 第 22

DAY 22 - resume builder: 顯示單筆resume頁面

  • 分享至 

  • xImage
  •  

哈囉大家好~
這兩天雨都下好大啊!雖然沒辦法出去曬太陽,但還是可以在家裡看電影/images/emoticon/emoticon07.gif
昨天處理完在dashboard顯示resume list的部分,今天要完成單筆resume 顯示的頁面。
那就馬上開始吧!

先透過cookie killer這個帳號創建一筆resume資料,創建按下儲存後會回到dashboard頁面,這時候archive區域裡面就會有剛剛創建的資料按鈕:(上面有顯示創建的時間)
https://ithelp.ithome.com.tw/upload/images/20240922/20168986mBqXVtMoYr.png
按下按鈕後就可以預覽撰寫的resume內容:
https://ithelp.ithome.com.tw/upload/images/20240922/20168986nsEZrF54TQ.png
(做完後發現這不太像resume,比較像business card,整個大離題XD只能將錯就錯了/images/emoticon/emoticon02.gif

大致介紹完介面的設計後就來看看程式碼吧!

先補上對應單筆resume預覽的路徑:(web.php)

Route::get('/resume/{id}', ResumePreview::class);

以及dashboard中resume按鈕的處理:

<a class="btn btn-dark" type="button" href="/resume/{{ $resume->id }}">
                                <h5 style="float: left;">Resume</h5>  
                                <small>
                                     <span style="float: right;">created at {{ $resume->created_at}}</span>
                                </small>
                            </a>

因為要在單筆resume頁面顯示之前撰寫的resume資料,所以會把讀取資料的邏輯寫在controller的render() function中:

public function render(Request $request)
    {
    $id = $request->route('id'); #讀取路徑中的id
    
    if (!$id) {
        dd('invalid id');
    }

    $resumeContent = Resume::find($id); #利用id讀取資料庫中對應資料(獨一無二)

    if (!$resumeContent) {
        dd('Resume not found!');
    }

    $githubUser = Auth::user();
        return view('livewire.resume-preview', 
        ['resumeContent' =>  $resumeContent, 'githubUser' => $githubUser]);
    }

這裡會import Request Object來幫忙讀取dynamic route中的"id"(路徑:/resume/{id}"),
因為每筆resume提交時都有一個auto increment的id欄位,所以這裡撈資料時只有有id作為條件判斷,並且使用find()function 來撈取確定只有一筆的資料。
因為想要在頁面顯示使用者的GitHub大頭照作為resume大頭照使用,所以也把使用者github資訊一起傳送。

再來創建顯示單筆resume頁面的component:(resume-preview.blade.php),並將resume的內容放到對應欄位:
(因為傳送的資料是array型態,所以access特定attribute時要透過箭頭,
例如姓名:{{ $resumeContent->name }}

<div>
    <livewire:Navbar />
    <div class="card mb-3" 
            style="max-width: 800px; margin: auto auto;margin-top: 5em;">
        <div class="row g-0">
            <div class="col-md-4">
                <img src="{{ $githubUser->avatar_url }}" class="img-fluid rounded-start" alt="...">
                
                <div>
                    <div class="card-body">
                        <h4 class="card-title">
                                Contact
                        </h4>
                        <ul class="list-group list-group-flush">
                            <li class="list-group-item">📧{{ $resumeContent->email }}</li>
                            <li class="list-group-item">📞{{ $resumeContent->phone }}</li>
                        </ul>
                    </div>
                </div>
                
            </div>
            <div class="col-md-8">
                <div class="card-body">
                    <h1 class="card-title">
                        {{ $resumeContent->name }}
                    </h1>
                    <p class="card-text">
                        {{ $resumeContent->selfIntro }}
                    </p>
                    <h4 class="card-title">
                        Education
                    </h4>
                    <p class="card-text">{{ $resumeContent->education }}</p>
                    <h4 class="card-title">
                        Skills
                    </h4>
                    <p class="card-text">{{ $resumeContent->skills }}</p>
                    <h4 class="card-title">
                        Languages
                    </h4>
                    <p class="card-text">{{ $resumeContent->language }}</p>
                    
                    <h4 class="card-title">
                        Reach out
                    </h4>
                    <p class="card-text">find me here👉<a href="{{ $resumeContent->social }}">My Social Media</a></p>
                </div>
            </div>
        </div>
        </div>
    </div>
</div>

最下面的社群連結直接放到a標籤裡面,透過點擊就可以直接切換到使用者輸入的社群連結。
這樣就大概完成了resume card的預覽頁面!


今天簡單介紹完頁面預覽的處理,明天想要在這個頁面新增編輯內容的功能,讓使用者可以修改並且按下儲存後直接預覽更新後的結果~
那就明天見啦 byebye/images/emoticon/emoticon42.gif


上一篇
DAY 21 - resume builder: 顯示創建的resume list
下一篇
DAY 23 - resume builder: 編輯創建的resume (上)
系列文
PHP框架-Laravel自學挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言