目次
1 Symfonyを準備する
1-1 インストールとセットアップ
なぜPHPを選ぶのか
フレームワークは「システム」を提供する
PHPのフレームワーク
Symfony導入に必要なもの
Composerを用意する
Visual Studio Codeについて
1-2 プロジェクトの作成と実行
Composerでプロジェクトを作る
website-skeletonプロジェクトの作成
プロジェクトを実行する
Visual Studio Code での編集
symfony/skeletonについて
どちらを使うべきか?
2 コントローラーとルーティング
2-1 コントローラーの基本
Model-View-Controller
コントローラーを作成する
HelloController にアクセスする
HelloControllerのソースコード
routes.yamlによるルート設定
アノテーションによるルート設定
HTMLを表示するには?
AbstractControllerについて
サービスを確認する
2-2 コントローラーに関する諸機能
パラメーターの利用
クエリーパラメーターの利用
RequestとResponse
リダイレクトとRdirectResponse
JsonReponseについて
XMLデータの表示
エラーの送信
ログ出力について
3 テンプレートとビューの基本
3-1 Twig テンプレートの利用
テンプレートエンジン
デフォルトのコードをチェック!
テンプレートを書いてみよう
テンプレートからコントローラーへ値を渡す
3-2 フォームの利用
フォームの送信について
GET および POST を同一アクションで処理
Symfony Forms を利用する
Symfony Formを使ってフォームを作成する
項目の種類について
テンプレートにフォームを表示する
送信されたフォームの処理
フォームをオブジェクトで管理する
セッションについて
3-3 Twigテンプレートを使いこなす
デフォルトのテンプレートをチェック!
継承について
ブロックについて
オリジナルレイアウトを作ろう
{% set %} による変数設定
{% with %}によるスコープ設定
{% if %} による条件表示
{% for %} による繰り返し
マクロの利用
マクロを作成する
マクロを呼び出す
テンプレートのインクルード
テンプレートに値を渡す
オートエスケープについて
フィルターについて
4 データベースと Doctrine ORM
4-1 データベース利用の準備
なぜ、ORMなのか
SQLiteについて
データベースの設定を行う
DB Browser for SQLiteについて
データベースとエンティティについて
データベース作成の手順
エンティティの作成
マイグレーションを実行する
データベースファイルの中身を確認する
生成されたスクリプトファイル
マイグレーションファイルについて
4-2 エンティティとリポジトリの基本
Person.phpの内容をチェックする
エンティティのアノテーション
レコードを追加する
エンティティの一覧を表示する
テーブルアクセスはリポジトリの役目
リポジトリの秘密
リポジトリのソースコード
IDでエンティティを検索する
コントローラーを修正する
エンティティの自動フェッチ
4-3 CRUDの基本
CRUDとは?
レコードの作成
レコードの更新
レコードの削除
エンティティのフォームを生成する
エンティティのタイプクラスを作る
PersonTypeを利用する
5 データベースを使いこなす
5-1 検索とリポジトリの拡張
findBy および findOneBy について
名前でレコードを検索する
name による検索メソッドを作成する
QueryBuilder および Query による検索手順
あいまい検索を利用する
〇〇歳以上を検索する
複数の検索テキストを指定する
5-2 検索を更に探求する
Expr で式を作る
Exprの条件用メソッド
Exprで in 式を利用する
複数条件の AND 検索
複数条件の OR 検索
ソートの設定
レコードの取得範囲
5-3 DQL/SQL の実行
DQL (Doctrine Query Language)
DQLのSELECT文について
エンティティを更新・削除するDQL構文
ネイティブSQLの実行
5-4 バリデーション
値の検証について
PErsonType の検証を OFF にする
モデルとコントローラーの検証処理
エンティティに検証情報を追記する
コントローラーでフォームを検証する
メッセージのスタイルについて
主な検証ルール
メッセージを日本語化する
フォームに検証ルールを設定する
5-5 複数テーブルの連携
message テーブルの利用
Message エンティティを作る
Message エンティティについて
関連付けの種類
MessageRepositoryの修正
Personエンティティの更新
MessageControllerの作成
MessageTypeの作成
テンプレートの作成
Message を利用してみる
Person から関連 Message を利用する
エンティティ連携のポイント
6 ページネーション、ファイルアクセス、フラッシュメッセージ、ユーザー認証
6-1 ページネーション
ページネーションとは?
MessageRepository の編集
MessageController の編集
message/page.html.twig の作成
pegenav.html.twig で移動用リンクを作る
6-2 ファイルアクセス
Finderによるファイルアクセス
コントローラーをすべて表示する
フォルダの一覧を得る
in の指定について
Finderのさまざまな絞り込み機能
ファイルのコンテンツを表示する
FileSystem の利用
6-3 フラッシュメッセージ
コントローラーとビューをつなぐ
フラッシュメッセージを利用する
オブジェクトをメッセージで送る
FlashBagについて
メッセージを蓄積する
メッセージををクリアする
テンプレートを修正する
6-4 ユーザー認証
ユーザー認証の仕組み
User エンティティの作成
User エンティティの修正
登録用 RegisterController の作成
UserType クラスの作成
register アクションのテンプレートを作成する
ログイン処理の SecurityController を作る
ログインページのテンプレートを作る
一般ユーザーのサンプルページを用意する
security.yaml を記述する
security.yaml の設定について
認証システムを利用する
isActiveについて
更に拡張する
7 Symfony の拡張
7-1 サービスの作成
Symfony とマイクロサービス
MyService を作成する
MyService を利用する
サービス内からほかのサービスを利用する
インターフェイスとサービス
設定ファイルの利用
設定情報を利用する
7-2 バリデーターの作成
バリデーションの仕組み
Constraint クラスについて
ConstraintValidator クラスについて
NeverUpper クラスを作成する
NeverUpperValidator クラスを作成する
NeverUpper バリデーションを利用する
クラススコープバリデーター
UserChecker の作成
UserCheckerValidator の作成
UserChecker を利用する
7-3 Twigの拡張
カスタムフィルターについて
フィルターとAbstractExtension
Price フィルターの作成
price フィルターを利用する
カスタムタグの作成
トークンパーサークラス
HeloTokenParserの作成
ノードクラス
HeloNodeクラスの作成
エクステンションクラスによるタグの登録
HeloTokenParser を拡張する
複数の属性に対応する