Symfony 4 と MySQL などのデータベースの組み合わせで基本的なアプリケーションを作っていきます。今回は例としてブログ風に記事を表示できるようにします。
Symfony 本体のインストール
Composer を使って本体をインストールします。「symfony-crud」の部分はプロジェクト名なので必要に応じて変更して下さい。
composer create-project symfony/skeleton symfony-crud
Doctrine のインストールとデータベース周辺の設定
まずはデータベースを操作するためのライブラリをインストールします。
composer require doctrine maker
インストールが完了すると .env ファイルにデータベースへの接続設定に関する項目が書き足されます。
DATABASE_URL の箇所を接続するデータベースに合わせて書き換えて下さい。
DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_nameSQLite を使う場合は次のようにします。
DATABASE_URL=sqlite:///%kernel.project_dir%/var/data.db
接続するデータベースはあらかじめ用意しておくか、コマンドから作成することもできます。
php bin/console doctrine:database:create
次にエンティティ(モデル)を作成します。今回は記事を表す Post という名前で作っていきます。記事にはID、タイトル、本文、作成日時を持たせます。「Post」の部分は好きな名前をつけることができます。
php bin/console make:entity Post
エンティティのフィールド(タイトルなど)は対話式で作っていきます。コンソールで、カラム名やタイプを聞かれるのでそれを指定するだけで自動的に作られます。中断した場合でも上記コマンドで再度編集できます。今回は下記の列を用意します。
- id integer(最初からあります)
- title string, length=100
- content text
- created_at datetime, nullable
マイグレーション(テーブルの作成)はエンティティを作ってしまえばその情報をもとに自動的に作ることができるので自分でファイルを用意する必要はありません。下記のコマンドで現在のデータベースとの差分をもとにマイグレーションファイルが作られます。
php bin/console doctrine:migrations:diff
ファイルが作成されたら実際にデータベースにテーブルを作成します。
php bin/console doctrine:migrations:migrate
フォームの作成
登録するためのデータを入力してもらうためにはテキストボックスなどの入力フォームが必要になります。まずはフォームに必要なコンポーネントと、CSRF(クロスサイトリクエストフォージェリ)対策のためのコンポーネントをインストールします。
composer require form
composer require symfony/security-csrf
次に src/Form フォルダを用意し、PostType.php というファイルを作ります。
<?php namespace App\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\OptionsResolver\OptionsResolver; class PostType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('title') ->add('content') ->add('created_at') ->add('save', SubmitType::class); } }
buildForm() の箇所で表示したい入力項目を追加します。今回はタイトル、本文、作成日時、保存ボタンです。
Similar Posts:
- [PHP]Symfonyを使ったメールフォームの作り方
- [PHP]Silexの基本的なルーティング方法とTwigによるビューの作り方
- Symfony 3 のインストールと基本構成
- [PHP]Laravelを使ったメールフォームの作り方
- [PHP][jQuery]Ajax(非同期通信)を使ったチャット
- [PHP]Laravelでメールアドレスでもユーザー名(ログインID)でもログインできるようにする
- [PHP]CakePHP 3のインストールと初期設定
- [JS][jQuery]フォームから複数のファイルをアップロード(入力欄の動的追加)