文章彙整

Laravel 7 中的新元件

Astral WebBy Astral Web 1 year agoNo Comments
首頁  /  網站設計與開發  /  後端開發  /  Laravel 7 中的新元件

雖說 Laravel 6 短期內仍會被多數大眾所用,然而使用 PHP 程式語言撰寫而成的框架 — Laravel 7 近期的來臨,讓我們來學習 Laravel 7 可為專案的開發帶來什麼效益吧!

Laravel 7 中的一個新功能為元件標記 (component notation)。有兩種方法可使用元件 – 「層級」或「匿名」,而本文將針對「層級」來做介紹。

我們必須使用Laravel指令欄來建立一個新的元件。請輸入以下指令:

php artisan make:component Test

透過上述指令,我們建立了一個名為「Test」的元件 (名稱為必填)。

這將在 App|View|Components 目錄中建立一個元件class,也可在 resources\views\components 目錄中建立一個模組。

你可以在這隻class中看出這是個包含「contractor」和「render」兩個function的簡單class,而「render」function可讓我們檢視剛建立完成的模板。

你現在可能發現了這個顯示元件的表現有如controller。

接著加入一些程式碼來看看是否成功。從你的 test.blade.php 檔案中,加入你的view:

<p>Hello this is a test</p>

接著讓我們使用這個元件。請至你的路徑中的任一layout(或建立一個新的route/layout 來測試),並加上下方的語法:

<x-test />

接著請打開你的瀏覽器,並試著進入那個路徑,即可看到新的元件已包含在你的layout中。雖然它並不是非常的令人驚艷,但至少可讓我們嘗試著加入一些東西到元件中。

在元件內的class中,基本上可以在controller中加入任何東西,因此你可以做fetch以及對資料的操作等之後,再轉移給你的元件。那麼,讓我們來轉移一些資料吧!請依照下方程式碼建立你的元件class:

public function something()
{
  $data = "some data here";
  return $data;
}

接著在Blade template中加入以下語法:

{{ $something }}

如同你平常在controller中的操作,當你完成重整頁面後,即可看到你已將資料轉移至此元件中。不過,有別於controller的是,資將會自動的轉移!任何 ‘public’ 功能皆如此。

你也可以將變數轉移至你的function中,如:

{{ $something(‘bar’) }}

從我們的template或route中有幾個不同的方式可將變數轉移至元件中。

從我們的template中轉移變數,可透過以下方式修改語法:

<x-test foo=“bar” />

你的route中的額外變數可透過以下方式取得:

<x-test :foo=‘$bar’ />

再來讓我們討論styling的部分。除非我們可設定html中的”class”等其他attribute來美化整體風格,否則元件則不會帶來太大的效益。

僅需要針對 X 語法簡單地加入一個”class” tag attribute:

<x-text class=‘bg-red’ />

接著在你的元件template中,我們即可存取屬性。需注意我們同時使用著「merge」的方式來包含任何我們希望元件可具備的class。若我們使用一個一般的class屬性和 X 標籤,則 X 標籤會優先被使用!

<p {{ $attributes->merge([‘class’ => ‘my-class’]) }}>
`Hello this is a test
</p>

最後要在本文中註明,X 標籤並不需要被關起。你可以使用 {{ $slot }} blade 語法來在一組 X 標籤中加入額外的程式碼或內容,如下:

Layout Template:

<x-test class="bg-red">
     Extra content
</x-test>

Component Template:

<p {{ $attributes }}>{{ $something('bar') }}<br />{{ $slot }}</p>

這些小撇步可幫助你建立側欄、變數的導覽、或其他可重複使用的元件!

如果你有任何相關問題,或想了解更多有關Laravel 7的新功能,歡迎在下方留言或與我們聯繫唷!

也別忘了追蹤歐斯瑞臉書粉絲團Instagram,以及訂閱我們的電子報,隨時接收第一手新知分享!

 000

推薦文章

Categories:
  後端開發網站設計與開發

留下回應

你的電子郵件地址不會被公開.