Symfony筆記

建立專案

使用 Symfony CLI 工具:

Terminal window
symfony new project_name --version=7.4 --webapp

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

啟動開發伺服器

使用 Symfony CLI 工具:

Terminal window
symfony serve --no-tls

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

建立網頁 (控制器)

有兩個方式:

  • 使用 MakerBundlephp 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

Terminal window
php bin/console importmap:require bootstrap
Terminal window
composer require symfonycasts/tailwind-bundle

組態資料庫

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

建立資料庫

Terminal window
php bin/console doctrine:database:create

建立表格 (實體)

使用 MakerBundle 以下的指令:

Terminal window
php bin/console make:entity

建立遷移

使用 MakerBundle 以下的指令:

Terminal window
php bin/console make:migration

執行遷移

Terminal window
php bin/console d:m:m

安裝 Fixtures 套件

Terminal window
composer require --dev orm-fixtures
  • orm-fixtures 是 Symfony Flex 的別名
  • 安裝這個套件時,Symfony Flex 的設定範本會自動執行,以預先組態套件:一個 PHP 類別會在 src/DataFixtures 中自動建立起來

編輯 Fixtures

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

另外,Fixtures 會寫在 load 函式中。

執行 Fixtures

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

Terminal window
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