私は Silex と Symfony を初めて使用し、symfony Form コンポーネントを使用してフォームを作成しようとしています。それは正常に機能していますが、検証/サニタイズに関してはどうすればよいかわかりません。
もちろん $app->escape($data) メソッドは知っていますが、私のニーズに合わないようです。
$form->isValid() メソッドを呼び出す前に、送信されたデータから html タグをエスケープしたいと思います。HTMLタグでテキストを無効にしたくありません。テキストからそれらをエスケープ/削除してから、取得した値を検証します。
したがって、基本的には、元の値または使用する代わりに、エスケープされた値をフォームに与えたいと考えています。
私の問題は、html タグを削除した後に送信されたテキストが空の場合にのみエラー メッセージを表示したいということです。
パッケージでhtml検証について何も見つからなかったので、カスタム制約を書くことを考えましたが、その場合、最初に検証で、次にデータを保存する前に、2回フィルター/エスケープする必要がありました。
私はこのようなことを達成したいと思います:
if ($request->getMethod() == 'POST') {
$comment = $request->get('comment');
if($comment) {
foreach($comment as &$value) {
$value = $app->escape($value);
}
$cleared = new Request(array(), array('comment' => $comment));
$form->bindRequest($cleared);
if ($form->isValid()) {
var_dump($form->getData());
}
}
}
ありがとう。