4

私はいくつかのフォームを使用するSymfony2アプリケーションを開発しています。フォームからのデータは、Doctrine2を使用してMySQLデータベースに永続化されます。Symfonyアノテーションを使用してエンティティにいくつかの制約を設定しました。これで、ユーザーがフォームに適切なデータを入力しなかった場合、エラーメッセージが表示されますが、Commandオブジェクトを使用して同じエンティティを操作しようとしても、例外やエラーは発生しません。

私が読んだドキュメントから、SymfonyとDoctrineの検証は別々のメカニズムとして機能しますが、今では...それらを1つとして機能させる方法はありますか?私が避けようとしているのは、エンティティオブジェクトをフロントエンドとバックエンドの検証として使用するために、同じ検証を作成することです。ありがとう。

4

2 に答える 2

12

フォームは呼び出し時に自動的に検証されます$form->isValid()が、フォームの外部でオブジェクトを検証する場合は、手動で呼び出す必要があります。

コマンドクラスでは、validatorサービスを取得してオブジェクトを検証してから永続化します。

$validator = $this->container->get('validator');
$errors = $validator->validate($myEntity);

if (count($errors) > 0) {
    return new Response(print_r($errors, true));
} else {
    return new Response('The entity is valid!');
}

ここのドキュメントの詳細http://symfony.com/doc/master/book/validation.html#using-the-validator-service

于 2012-07-02T17:12:39.160 に答える