私はいくつかのフォームエラーを取得していますが、私はエラーが何で、フォームが無効であるのかを理解するのに苦労しています。私はSymfony 2.7を使用しています。文字列としてのsymfony 2.7のフォーム検証エラーを取得します
$errors = $form->getErrors(true, true);
私はしかし、これらは現在<empty>
としてを通じて来ている、私たちのロギングアプリケーションに渡すことができるように私は、文字列としてそれらをしたいと思います。
私はいくつかのフォームエラーを取得していますが、私はエラーが何で、フォームが無効であるのかを理解するのに苦労しています。私はSymfony 2.7を使用しています。文字列としてのsymfony 2.7のフォーム検証エラーを取得します
$errors = $form->getErrors(true, true);
私はしかし、これらは現在<empty>
としてを通じて来ている、私たちのロギングアプリケーションに渡すことができるように私は、文字列としてそれらをしたいと思います。
多分(いくつかの形がネストされているほとんどの場合)、フォームからのエラーを取得するために、問題が発生したとき、私はこれらの2つのカスタムutilsの機能を使用し
$form->getErrorsAsString()
を試してみてください。
public function getErrorMessagesFromUnbubblingForm(\Symfony\Component\Form\FormInterface $form)
{
$errors = array();
foreach ($form->getErrors() as $key => $error) {
$template = $error->getMessageTemplate();
$parameters = $error->getMessageParameters();
foreach ($parameters as $var => $value) {
$template = str_replace($var, $value, $template);
}
$errors[$key] = $template;
}
if ($form->count()) {
foreach ($form as $child) {
if (!$child->isValid()) {
$errors[$child->getName()] = $this->getErrorMessagesFromUnbubblingForm($child);
}
}
}
return $errors;
}
public function getFlatErrorMessagesFromUnbubblingForm(\Symfony\Component\Form\FormInterface $form)
{
$errors = array();
foreach ($form->getErrors() as $error) {
$template = $error->getMessageTemplate();
$parameters = $error->getMessageParameters();
foreach ($parameters as $var => $value) {
$template = str_replace($var, $value, $template);
}
$errors[] = $template;
}
if ($form->count()) {
foreach ($form as $child) {
if (!$child->isValid()) {
$errors = $this->getFlatErrorMessagesFromUnbubblingForm($child);
}
}
}
return $errors;
}
この(string)$form->getErrors()
を試してみてください、そうでなければ、文字列にキャストしなければ、一見しても意味をなさない恐ろしい長い配列になります。
あなたが発生したエラーの合計数を知りたい場合は、これを使用し、
$form->count($form->getErrors())
ます$ form-> getErrorsAsString()は推奨されませんそれはないですか? – user1961082
、2.5以降では非推奨、3.0では削除されました。 docに従って、getErrors()を代わりに使用し、結果を文字列にキャストします。私の悪い私は2.3を使用しています – VaN