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

とりあえずこれで作成完了