Symfony筆記

建立專案

使用 Symfony CLI 工具:

symfony new project_name --version=7.4 --webapp

會建立一個包含 Symfony 應用程式的資料夾,你可以用你最愛的編輯器開啟。

啟動開發伺服器

使用 Symfony CLI 工具:

symfony serve --no-tls

啟動開發伺服器,預設使用 8000 連接埠。我們可以透過瀏覽器去應用程式:http://localhost:8000

建立網頁 (控制器)

有兩個方式:

  • 使用 MakerBundle 和它的 php bin/console make:controller 指令來建立 一個控制器類別
  • 現有的控制器類別中,建立一個新函式,其成為一個控制器,帶有 Route 屬性

設定路由 (網頁)

控制器類別中的函式,使用 Route 屬性:

#[Route('/my-url', name: 'my_route_name')]
public function myController(): Response
{}

編輯 Twig 模板

Twig 是一個模板引擎。所有模板都位於 templates/ 資料夾。

我們網頁的樣子是從模板設計的(網站布局)。

templates/base.html.twig 平常會有根模板。

安裝 Bootstrap/Tailwind

  • Bootstrap : 可以從控制台使用指令:
php bin/console importmap:require bootstrap
composer require symfonycasts/tailwind-bundle

組態資料庫

.env.local 檔案中,定義一個環境變數 DATABASE_URL

建立資料庫

php bin/console doctrine:database:create

建立表格 (實體)

使用 MakerBundle 的以下指令:

php bin/console make:entity

建立遷移

使用 MakerBundle 的以下指令:

php bin/console make:migration

執行遷移

php bin/console d:m:m

安裝 Fixtures 套件

composer require --dev orm-fixtures
  • orm-fixtures 是 Symfony Flex 別名
  • 安裝這個套件時,Symfony Flex 配方會自動執行,以預先組態套件:src/DataFixtures 中建立個 PHP 類別

編輯 Fixtures

Fixtures 位於 App\DataFixtures\AppFixtures 類別,所以如果我們遵循 PSR-4 邏輯,我們會在 src/DataFixtures/AppFixtures.php 檔案中找到 Fixtures。

Fixtures 會寫在 load 函式中。

執行 Fixtures

一旦 Fixtures 寫完,我們就可以用以下指令來載入資料:

php bin/console d:f:l

建立兩個實體之間的關係

使用 MakerBundle,並建立一個指向目標實體的屬性。

範例:

  • 編輯 Article 實體
  • 想要建立一個連結到 Category 的連結,所以一個文章有一個分類
  • 因此我們會建立一個 category 屬性
  • 這個屬性的類型會是 ManyToOne

關於類型,分開不同類型的關係,圍繞著 To 關鍵字:

  • Many / To / One
  • One / To / Many
  • 等等…

然後,把在編輯的實體名稱,插入到 To 的左邊。例如:

  • Many Articles / To / One

最後,把目標實體的名稱插入到 To 的右邊:

  • Many Articles / To / One Category