https://symfony.com/doc/current/validation.html
- Entity に値をセットして validate メソッドを呼ぶとエラーのリストが帰る
- エラーのリストは ConstraintViolationList オブジェクト
- string にキャストすることができる
<?php
$entity = new SomeEntity();
$entity->setFoo('bar');
$validator = $this->get('validator');
$errors = $validator->validate($entity);
if ($count($errors)) {
return (string) $errors;
}
- app/config/config.yml の framework セクションに次の記述を追加。アノテーションで記述する前提
validation: { enable_annotations: true }
アノテーションを使う Entity で use 文を書く
<?php
use Symfony\Component\Validator\Constraints as Assert;
- 必須項目
<?php
/**
* @Assert\NotBlank(message="is required")
*/
- 長さ制限
<?php
/**
* @Assert\Length(
* min = 3,
* max = 50,
* minMessage = "は {{ limit }} 文字以上必要です"
* maxMessage = "は {{ limit }} 文字までです"
* )
*/
getPropertyPath
でフィールド名が取得できるgetMessage
<?php
if (count($errors) > 0) {
$messages = [];
foreach ($errors as $error) {
$messages[] = $error->getPropertyPath() . ' ' . $error->getMessage();
}
$this->validationMessage = implode('<br />', $messages);
return false;
}
#symfony #doctrine