私はコードを掘って、このスニペットを見つけました:
public function buildView(FormView $view, FormInterface $form, array $options)
{
//...
$view->vars = array_replace($view->vars, array(
'errors' => $form->getErrors(),
'valid' => $form->isSubmitted() ? $form->isValid() : true, //<=== HERE
'value' => $form->getViewData(),
'data' => $form->getNormData(),
'required' => $form->isRequired(),
'size' => null,
'label_attr' => $options['label_attr'],
'compound' => $form->getConfig()->getCompound(),
'method' => $form->getConfig()->getMethod(),
'action' => $form->getConfig()->getAction(),
'submitted' => $form->isSubmitted(),
));
}
これはvalid
が設定されているのみ場所のようです。これはbuildView中に起こることに注意してください!その後のすべてがvalid
の値に影響しません。
フォームは現在有効であれば、我々は次のスニペットで見ることができるようにあなたは、単に、チェックするために$form->isValid()
を使用することができますしかし、すべてが無駄であるない:
public function isValid()
{
if (!$this->submitted) {
return false;
}
if ($this->isDisabled()) {
return true;
}
return 0 === count($this->getErrors(true));
}
あなたが前に、アレイを追加しました'$ form-> isValid()'を呼び出した後に? –
はいフォームを最初に作成したときに追加します(オーバーライドされたフォームファクタクラスで、Redisからエラーを取り出してフォームに追加します)。 – Kal
カスタムフィールドセットのテストを作成しようとしましたか、それともフォームを作成してから、コントローラでgetErrors()/ isValid()を呼び出しましたか? – dbrumann