2012年5月6日日曜日

Form CollectionType ~ prototype

Formにcollection type ってのがあります。このprototypeについての説明 詳しくは コチラ(How to Embed a Collection of Forms)を見てもらえればよいのですが、簡単にここでもまとめておこうかと思います。 そもそも collection type ってなんなのか まぁ、これは名前のままなんですが、typeの集合ですね。 例えば、「あなたの好きな曲はなんですか?」って項目に、TextType(テキストフィールド)が複数ぶら下がる場合を考えれば、 そのTextTypeを集めるのがCollectionTypeとなります。 もうちょっとわかりやすく説明しますと、UserにSongがぶら下がるとしましょう。これはOneToManyでUserがすきな曲は複数もてます。 こんなとき、UserTypeのEmbedでSongTypeを埋め込みたいですよね。でも1つのUserに対してSongTypeのフィールドたちをいっぱいもたなくてはならない。それってどうすんの? =>...

2012年5月2日水曜日

Formのwidget個々のカスタマイズ

Formのwidgetには、choice, time, number ..... のように、いくつか用意されています。 詳しくは コチラ (symfony日本語ドキュメント) で, templateで出力する際は {{ form_widget(form.fieldname) }} みたいにやります。 そうすると、 みたいな感じで表示されます。 ですが、 みたく、縦並びにしたいとかって、レイアウトをwidgetごとに変更したいときってありますよね。 そんなときは、 {% form_theme form _self %} {% block _[formtype名]_[フィールド名]_widget %} {% spaceless %} <div {{ block('widget_container_attributes')...

2012年4月1日日曜日

独自のアノテーションを作成する

独自のアノテーションを作成したいっ!ってなったことありませんか? ( @Route, @Template のように ) 例えば、Entity で CreatedAt を Annotation につけると現在時刻を付加 (→ http://www.scandio.de/2012/02/symfony2-custom-annotations/ で紹介されています)等のことが楽にできるようになります。 この独自アノテーションの作成方法を簡単にまとめておきます。 ※ 以下のように、param フィールド をもつ Custom というコントローラーのアノテーションを作ることにします。 <?php namespace Application\MogeraBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Core\HogeBundle\Annotations\Custom; class DefaultController extends Controller { /** * @Custom(param="hogehoge") */ public...

2012年3月18日日曜日

FormでEntityにないフィールドを使用する場合

Symfony2のフォームフレームワークでは、EntityとForm定義を結びつけることができます。 その方法は、http://symfony.com/doc/current/book/forms.htmlとかを見てもらえば分かるのですが、 AbstractTypeを継承したクラスで public function getDefaultOptions(array $options) { return array( 'data_class' => 'Acme\TaskBundle\Entity\Category', ); } とするか、 formインスタンスを作成する時に、 use Acme\TaskBundle\Form\Type\TaskType; public function newAction() { $task = new Task(); // Task Entityのインスタンスを作成 $form = $this->createForm(new TaskType(), $task); // それを第二引数でわたす // ... } とするかです。 このようにすると、Entityにデータをbindすることができるのですが、Entiryに存在しないフィールド名をフォームに定義してしまうと、エラーが出る。 例えば、TaskEntiryに...

2011年12月8日木曜日

consoleコマンドリスト

$ php app/console listのコマンドで、コンソールのコマンドリストを見れます。 別にコンソール上で見ればいいけど、一応一覧をメモっておく。 Symfony version 2.0.6 - app/dev/debug Usage:   [options] command [arguments] Options:   --help           -h Display this help message.   --quiet          -q Do not output any message.   --verbose        -v Increase verbosity of messages.   --version        -V Display this program version.   --ansi      ...

既存のテーブルからEntityを作成!

タイトルのように、既存のテーブルからEntityを作成したい場合は、どうするのかなーと思ってた所、こんな記事がありました。→ How to generate Entities from an Existing Datab...

2011年12月6日火曜日

controllerに書くアノテーションについて

SensioFrameworkExtraBundle Symfony2 では、アノテーションとして Routing の情報等を書くけど、そのアノテーションに関する情報がまとまってなくて、どっかにないかなーと思っていたら、ドキュメントにあったので、紹介 + 自分なりにまとめてみます。 とりあえず、アノテーションに以下の5つの機能があるっぽい @Route and @Method : ルーティングの情報や、ルートに許可されるHTTPメソッドを指定 @ParamConverter : リクエストの内容をオブジェクトに変換する機能を使用することを指定 @Template : テンプレート名を指定する @Cache : HTTPキャッシュを作成するためのアノテーション @Route and @Methodドキュメントはコチラ → @Route and @Method /**  * @Route("/{id}", requirements={"id" = "\d+"}, defaults={"foo" = "bar"})  */ public function showAction($id) { } @Route() では、第一引数で pattern 情報を指定 requirements...

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More