セレクトボックスの先頭を空にしたい

symfonyのテンプレートではFormHelperを使うことでinputタグ・textareaタグなどをテンプレートで使わなくなりました。 その中でも、セレクトボックスを作成する場合はselect_tagとoptions_for_selectの2つの関数を扱います。 2つの関数の使い方を実装例を交えながら説明したいと思います。

select_tagとoptions_for_selectの2つのヘルパー関数を使ってコードを書いてみましょう。

< ?php echo select_tag("drink",options_for_select(array(1 => 'コーラ', 2 => 'お茶', 3 => '水'))) ?>

以下のように表示されます。

 

select_tagを使えば簡単にセレクトボックス作ることができますが、問題はセレクトボックスの先頭を空にしたいという要件はないでしょうか?

以下のようなケースです。

先頭を空にしたいのでoptions_for_selectの引数のarrayに空の配列を加えてみました。

< ?php echo select_tag("drink",options_for_select(array('' => '', 1 => 'コーラ', 2 => 'お茶', 3 => '水'))) ?>

しかし、先頭にわざわざ空の配列を作るのはコードの見栄えが悪いです。 これをoptions_for_selectの特殊なオプションで回避したいと思います。

この投稿の続きを読む »セレクトボックスの先頭を空にしたい

Helperの日本語対応

Symfonyで実際に開発を始めてみると時折、文字化けなど予期せぬことが発生しました。

原因を調べてみると文字列を扱うHelperにあるようです。それもそのはず、日本語はマルチバイト文字なので通常のString関数を使用していれば不具合が起こる可能性はあります。 ということで文字列を扱う関数をマルチバイトに対応する関数に置き換えたHelperが必要だと思いました。

今回はその対処について幾つか上げて行きます。

この投稿の続きを読む »Helperの日本語対応

Formの入力値をValidatorを使って変換する

SymfonyはYAMLを使ってvalidationを設定することができます。詳しい説明に関しては本家のドキュメントを参照してください。

HTML_QuickFormというものをご存知でしょうか?

ルールやフィルタを設定してFormで送信された値の入力のチェックをおこなうことができます。 ルールは送信された値の入力規則にあたります。 フィルタは送信された値から余計な文字の削除や変換をおこなう機能です。 例えばtrimなどをactionで毎回書く作業をフィルタを実装することで省くことができます。

Symfonyではvalidationクラスを作成することで様々な入力規則の作成が可能です。 QuickFormでいうルールに対して対応していますが、フィルタには対応していません。

validationを利用してtrimmbConvertKanaのフィルタを実装してみます。

この投稿の続きを読む »Formの入力値をValidatorを使って変換する