symfony1.2のAdmin Generatorはformフレームワークベース
formフレームワークになったおかげで格段に柔軟性がアップしました。
公式のブログ記事の例を簡単に解説します。
schema.ymlで以下のようなモデルを定義。
propel:
demo_article:
id: ~
author_id: { type: integer, foreignReference: id, foreignTable: demo_author, onDelete: cascade, onUpdate: cascade, required: true }
status: { type: varchar(255), required: true }
title: { type: varchar(255), required: true }
content: { type: longvarchar, required: true }
is_on_homepage: boolean
published_at: timestamp
created_at: timestamp
updated_at: timestamp
demo_category:
id: ~
name: varchar(255)
demo_author:
id: ~
name: varchar(255)
demo_tag:
id: ~
name: varchar(255)
demo_tag_article:
tag_id: { type: integer, primaryKey: true, foreignReference: id, foreignTable: demo_tag, onDelete: cascade, onUpdate: cascade, required: true }
article_id: { type: integer, primaryKey: true, foreignReference: id, foreignTable: demo_article, onDelete: cascade, onUpdate: cascade, required: true }
demo_category_article:
category_id: { type: integer, primaryKey: true, foreignReference: id, foreignTable: demo_category, onDelete: cascade, onUpdate: cascade, required: true }
article_id: { type: integer, primaryKey: true, foreignReference: id, foreignTable: demo_article, onDelete: cascade, onUpdate: cascade, required: true }
バックエンドアプリを作成
> php symfony generate:app backend
settings.ymlのescaping_strategyをonにする。
以下のコマンドを実行
symfony propel:generate-admin backend DemoArticle --module=article
symfony propel:generate-forms
symfony propel:generate-filters
さらに
symfony propel:generate-admin backend DemoCategory --module=category
とりあえずこれで作成完了