2007-11-01
カボチャ最終日
カボチャ型カボチャ団子。
思ったより圧縮が激しくてかなり小さいものに。あと皮の部分があまり細かくできなくて中途半端な塊が残る状態になってしまったのが失敗。
週間といっときながらもう10月も終了なのでこれでおしまいです。カボチャもないし。
IE における Piece Framework のハマりボタン
ページの中に準備された1つのフォームから、例えばいくつかの別ページへ遷移したり、何らかの処理を実施するため複数ボタンを準備するようなケースがあるかと思いますが、
なんでもないこのコード、IE では正常に動作しません。
具体的には、「戻る」ボタンを押したにも関わらず、「次へ」ボタンを押したように振舞ってしまいます。これは、フォームへの Submit が実行されると、準備された2つのボタンともにリクエストパラメータとしてPOSTされてしまうためです。ボタンには Piece Framework を制御するためのイベント名が付与されていますが、2つのイベントリクエストが飛んできてしまうため、実行すべきイベントが正しく認識できなくなってしまうのです。
ボタンによるイベントの切り替えを Form への Submit で行う場合は、<button> タグではなく <input type="submit"> で対応するようにしましょう。
<button type="submit" name="{__eventNameKey}_next" value="次へ" />次へ</button>
<button type="submit" name="{__eventNameKey}_back" value="戻る" />戻る</button>
なんでもないこのコード、IE では正常に動作しません。
具体的には、「戻る」ボタンを押したにも関わらず、「次へ」ボタンを押したように振舞ってしまいます。これは、フォームへの Submit が実行されると、準備された2つのボタンともにリクエストパラメータとしてPOSTされてしまうためです。ボタンには Piece Framework を制御するためのイベント名が付与されていますが、2つのイベントリクエストが飛んできてしまうため、実行すべきイベントが正しく認識できなくなってしまうのです。
ボタンによるイベントの切り替えを Form への Submit で行う場合は、<button> タグではなく <input type="submit"> で対応するようにしましょう。
<input type="submit" name="{__eventNameKey}_next" value="次へ" />
<input type="submit" name="{__eventNameKey}_back" value="戻る" />
ラベル:
"Piece Framework",
PHP,
Piece,
Piece_Unity
2007-10-31
2007-10-29
カボチャ週間
今週がハロウィンということでカボチャ週間です。
とはいっても別にパーティするわけでもなく、普通にカボチャをつかった料理を作るだけー。しかも和しか作らない。
ということで初っ端はひとまずオーソドックスに「なんきんのたいたん」で。関西ではカボチャ煮のことをこう呼びます。たいたん。
とはいっても別にパーティするわけでもなく、普通にカボチャをつかった料理を作るだけー。しかも和しか作らない。
ということで初っ端はひとまずオーソドックスに「なんきんのたいたん」で。関西ではカボチャ煮のことをこう呼びます。たいたん。
2007-10-26
Piece_Right で複数カラムのエラーメッセージを1つにまとめる
上記のような入力フォームで氏名の姓・名ともに入力値の必須バリデーションを行う場合、それぞれのリクエスト毎に必須確認およびエラーメッセージを設定すると、片方のみ未入力というケースならばよいものの、
両方ともに未入力の場合だと、上のような感じに。
これを回避しようとすると、テンプレート側で「どっちもエラーならば片方のみ表示して~」というような分岐文を書いてしまうところです。
ここは、次のようなバリデーションを行うようにします。
- name: lastName
filter: &Japanese
- trim
- JapaneseH2Z
- name: firstName
filter: *Japanese
- name: name
required:
message: 未入力です
pseudo:
format: %s%s
arg:
- lastName
- firstName
これで、lastName, firstName のどちらかが未入力だった場合 name カラムもブランクとなり、required ルールにヒットしエラーとなります。あとはテンプレートにて name カラムについてのエラー処理を行えば OK です。もちろん、lastName, firstName の値もそのまま利用できます。
ラベル:
"Piece Framework",
PHP,
Piece,
Piece_Right
2007-10-19
Piece_Right による複数項目を使った WithMethod 実行と finals
前のエントリでさらっと使用していたりするのですが、Piece_Right のバリデーションルールの1つである WithMethod において複数のリクエストカラムを使った処理を実施したい場合は、WithMethod で指定したメソッドの第3引数として渡される Piece_Right_Results オブジェクトを利用します。
なおここで受け取れる値は、既にバリデーション済みの対象に限ります。すなわち、このメソッドが実行される WithMethod バリデーションが行われる前に、あらかじめ username に対してのバリデーションが済んでいる必要があります。
バリデーションは、通常はバリデーションルールの書かれた yaml ファイル内の順に実行されますので username カラムを一番に記述しておけば問題はないはずです。確実に最終バリデーションとして実行したい場合は、validator とは別に記述することのできる finals を利用することで、すべてのバリデータ実行の後に改めてバリデーションを行うことができます。
function checkPassword($password, $context, $results)
{
// username リクエストの値を取得
$username = $results->getFieldValue('username');
....
}
なおここで受け取れる値は、既にバリデーション済みの対象に限ります。すなわち、このメソッドが実行される WithMethod バリデーションが行われる前に、あらかじめ username に対してのバリデーションが済んでいる必要があります。
バリデーションは、通常はバリデーションルールの書かれた yaml ファイル内の順に実行されますので username カラムを一番に記述しておけば問題はないはずです。確実に最終バリデーションとして実行したい場合は、validator とは別に記述することのできる finals を利用することで、すべてのバリデータ実行の後に改めてバリデーションを行うことができます。
- name: username
required:
message: ユーザ名を入力ください
filter: &AlphaNumeric
- trim
- JapaneseAlphaNumeric
validator:
- name: Length
rule:
min: 6
max: 255
- name: password
required:
message: パスワードを入力ください
filter: *AlphaNumeric
validator:
- name: Length
rule:
min: 6
max: 255
finals:
- name: WithMethod
rule:
class: AuthenticationAction
method: checkPassword
message: 認証に失敗しました
ラベル:
"Piece Framework",
PHP,
Piece,
Piece_Right
登録:
投稿 (Atom)





