シムノート

PHPフレームワークSymfonyの学習帳

ユーザ用ツール

サイト用ツール


サイドバー

メニュー



このエントリーをはてなブックマークに追加

blog:2015-12-21:symfony入門_todoリストチュートリアル_crud

Symfony3入門 TODOリストチュートリアル : (2) CRUD

DBの設定

このチュートリアルではsqliteを使います。
設定内容はこちら

Taskエンティティの作成

Taskエンティティをジェネレータで作成します。項目はstring型のnameのみ作成します。

$ bin/console doctrine:generate:entity

The Entity shortcut name: AppBundle:Task [Enter]
Configuration format (yml, xml, php, or annotation) [annotation]: [Enter]
New field name (press <return> to stop adding fields): name [Enter]
Field type [string]: [Enter]
Field length [255]: [Enter]
Is nullable [false]: [Enter]
Unique [false]: true [Enter]

New field name (press <return> to stop adding fields): [Enter]

> Generating entity class src/AppBundle/Entity/Task.php: OK!
> Generating repository class src/AppBundle/Repository/TaskRepository.php: OK!

制約の追加

Taskエンティティにバリデーションチェックの制約を追加します。

// ...
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * ...
 *
 * @UniqueEntity("name")
 */
class Task
{
    /**
     * ...
     * 
     * @Assert\NotBlank()
     */
    private $name;

    // ...
}

DBのスキーマを更新します

$ bin/console doctrine:schema:create
$ bin/console doctrine:schema:update

CRUDの作成

Taskエンティティに対するCRUD(Create, Read, Update, Delete)処理をジェネレータで作成します。

$ bin/console doctrine:generate:crud

The Entity shortcut name: AppBundle:Task [Enter]
Do you want to generate the "write" actions [no]? yes [Enter]
Configuration format (yml, xml, php, or annotation) [annotation]: [Enter]
Routes prefix [/task]: [Enter]

Do you confirm generation [yes]? [Enter]

Generating the CRUD code: OK
Generating the Form code: OK
Updating the routing: OK

Formの修正

フォームクラスで日本語ラベルを表示するように修正します。

// ...

use Symfony\Component\Form\Extension\Core\Type\TextType; // 追加

// ...
class TaskType extends AbstractType
{
    // ...
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
//          ->add('name')
            // 入力項目のタイプとラベルの指定を追加
            ->add('name', TextType::class, ['label' => 'タスク名']);
        ;
    }
    // ...
}

CRUDの動作確認

http://localhost:8000/task/ にアクセスして、TaskのCRUDをテストします。表示、追加、変更、削除が出来るはずです。

CRUDジェネレータを使うと、「えっ、これだけ?」と思うくらい、簡単に出来ちゃいました。


Comments



13 +6 = ?
blog/2015-12-21/symfony入門_todoリストチュートリアル_crud.txt · 最終更新: 2015/12/22 18:01 by tsubo