page_adsence

2010年6月16日水曜日

symfony1.4.5でアドミンジェネレーターを作成

楽に管理画面が作れるって聞いてたので使ってみた。
まず結果。

できませんでした・・・。

今回はフロントエンドなしの状態から管理画面を作ろうとしました。
まずこのページにやりかたが書いてあったので、これをベースに進めていきます。
1.プロジェクト作る。
$ ./symfony generate:project test_project

2.database.ymlをデータベースに接続できる状況にする。
$ vi config/database.yml

all:
doctrine:
class: sfDoctrineDatabase
param:
dsn: mysql:host=localhost;dbname=test
username: your_database_username
password: your_database_password

3.管理画面用にアプリケーションを作る。
$ ./symfony generate:app test_project test_app

4.schema.ymlを作るんですが、今回はMySQL_Workbenchを使ってsqlを作っておいたので、
それをデータベースに入れてからbuild-schemaでschema.ymlを作ります。
$ ./symfony doctrine:build-schema

するとconfig/doctrine/schema.ymlができます。
5.fixtures.ymlを作ります。データはとりあえず1つだけ作ります。
$ vi data/fixtures/fixtures.yml

Tablename:
Tablename_1:
field_name1: field_value
:
:

6.doctrine:build-all-reloadってタスクを実行しているのですが、僕の作った環境にはなかったので、
順番に実行していきました。何度も実行するなら自分でタスク作ったほうがいいと思います。
データベースを削除

データベースを新規作成

モデルの作成

モデルからsqlの作成

フォームクラスを作成

フィルターフォームクラスを作成

fixtures.ymlの読み込み

7.apps/test_app/config/routing.ymlに記述を追加
your_database_table_name:
class: sfDoctrineRouteCollection
options:
model: your_database_table_model_class_name
module: your_app_modlue_name
prefix_path: なぞ
column: primary_key_id ← これを書かなかったらエラーになったので追加した。
with_wildcard_routes: true

8.管理画面を作成するタスクを実行する
$ ./symfony doctrine:generate-admin test_app module_name

とりあえずこんな感じで管理画面自体は見れるようにはなったが、以下のような不具合があった。
・cssが読み込まれていなかった→これは
・日本語が文字化けしてる。
・データベースのフィールド数が多い場合リスト表示のテーブルと詳細表示のテーブルが重なって見えない

いろいろよくわからなくて調べた時の資料。
- filterとかformをgenerateし忘れたときにでたエラーの回答
http://samsami2u.wordpress.com/2009/04/06/class-formfilter-not-found-in-symfony/
- デバックモード時にでるconfigのタブの中にあるUserのリストの中のdefault_cultureやcultureを変更しようとした時に調べた資料。結局未解決
http://www.symfony-project.org/jobeet/1_4/Propel/ja/19
http://www.symfony-project.org/reference/1_4/ja/04-Settings
http://www.symfony-project.org/reference/1_4/ja/05-Factories
http://www.kazu.tv/blog/archives/000929.html
http://www.pistolfly.jp/weblog/2006/11/default-culture.html
http://www.pistolfly.jp/weblog/2006/12/userculture.html