この記事では Symfony 3.2 のインストールと重要なフォルダの階層、ルーティングの基本などについて説明します。
インストーラーの準備
Mac, Linux
下記のようにして Symfony のインストーラーをダウンロード、インストールします。
$ sudo mkdir -p /usr/local/bin $ sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony $ sudo chmod a+x /usr/local/bin/symfony
プロジェクトの作成は次のようにします。my_project_name の部分はプロジェクトのフォルダ名になりますので好きな名前をつけて下さい。
$ symfony new my_project_name
Windows
Windows の場合次のようにして実行ファイルをダウンロードします。
php -r "readfile('https://symfony.com/installer');" > symfony
ダウンロードした symfony というファイルをプロジェクトのフォルダに移動し「php symfony」のようにして使います。
プロジェクトのルートフォルダに移動しプロジェクトを作成します。
my_project_name の部分はプロジェクトのフォルダ名になりますので好きな名前をつけて下さい。
C:¥> cd projects C:¥projects¥> php symfony new my_project_name
Composer を使う
PHP のバージョンが古かったり、Symfony のインストーラーが使えない場合は Composer を使ってインストールします。
composer create-project symfony/framework-standard-edition my_project_name
インストールされる主要コンポーネント
Symfony 3 にはデータベースまわりを扱う Doctrine ORM、メール送信のための Swift Mailer、テンプレートエンジンの Twig などが予めインストールされています。
主要ファイル構成
各種設定ファイルは app/config にまとめられています。
設定は YAML 形式のファイルで保存されており、ロケールやメールサーバー情報、データベースの接続情報などはここで編集します。
コントローラーは src/AppBundle/Controller にあります。
ホームページを表示するための DefaultController.php が見本として用意されています。
テンプレートファイルは app/Resources/views にあります。
テンプレートエンジンには Twig が使われています。
パブリックフォルダの名前は web です。独自ドメインもこのフォルダに割当てます。
画像や CSS、JS などのアセットはここに配置します。
ルーティング
ルーティングの指定方法は app/config/routing.yml で変更できますが、デフォルトではコントローラーでのアノテーション(コメント)が利用されます。
/** * @Route("/api/posts/{id}") * @Method({"GET","HEAD"}) */ public function showAction($id) { // }
それぞれのビューコントローラーのメソッドの上にアノテーションとしてルーティングを記述します。
@Route にはパスを定義します {id} のように括弧で囲むと引数として受け取れるようになります。
@Method は HTTP メソッドを指定するために使います。デフォルトでは全てのメソッドが受け入れられる状態です。
@Method(“PUT”) のようにすると PUT メソッドのみに反応するようにできます。複数のメソッドに対応する場合 {“GET”,”HEAD”} のように波括弧を用いて GET か HEAD のときにみに限定できます。
コントローラーメソッドの命名は indexAction(), showAction(), editAction() のように 役割 + Action() の形にします。
パスの書式を指定したり、ルートに名前を付ける場合は次のようにします。
/** * @Route("/blog/{page}", name="blog_list", requirements={"page": "\d+"}) */
name はルートの名前です。アプリケーション全体でユニークな名前にして下さい。
名前をつけておくと URL の出力が簡単になります。
requirements は正規表現を使ったルールです。
上記の例では {page} が数字であることが条件となっています。
デバッグ
web/app_dev.php にアクセスするとデバッグモードになります。
IPアドレスによる制限がかかっているため、Vagrant を使用している場合などでアクセス元が 127.0.0.1 でない場合 app_dev.php 内の in_array() に許可する IP を追加します。
!(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'])
ビューのレンダリング
コントローラーで直接レスポンスを出力するには次のようにします。
return new Response( "Hello, World!" );
Twig テンプレートを使ってレンダリングする場合はこのようになります。
return $this->render('default/index.html.twig', ['key' => 'value']);
Twig の詳細に関しては割愛しますが render() の第1引数にテンプレートファイル名を指定し、第2引数にテンプレートに渡す変数とその内容を連想配列の形で記述します。配列のキー名がそのまま変数名として渡されます。
Similar Posts:
- [PHP]Silexの基本的なルーティング方法とTwigによるビューの作り方
- [PHP]Symfonyを使ったメールフォームの作り方
- [PHP]Symfony 4 とデータベースを使ったCRUDアプリケーションの作り方
- [PHP]Laravel5をOS X(Mac)のローカルサーバーにインストールする
- [PHP]Swift Mailerで日本語(ISO-2022-JP)のメールを送信
- [PHP]Laravel Valet を使った簡単なローカル環境構築
- 初心者の方でも簡単に個人サイトが作れる Mobirise の使い方
- [PHP]WindowsでHomesteadを使ってLaravel5開発環境を作る(2/2)