Symfony がフィールドを処理するように、このフォーム フィールドを処理したいと思いますpassword
。入力されません。PasswordTypeを見てみましょう。
namespace Symfony\Component\Form\Extension\Core\Type;
class PasswordType extends AbstractType
{
public function buildView(FormView $view, FormInterface $form, array $options)
{
if ($options['always_empty'] || !$form->isSubmitted()) {
$view->vars['value'] = '';
}
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'always_empty' => true,
'trim' => false,
));
}
//...
}
とても簡単です: FormType (つまり CaptchaType)$view->vars['value'] = ''
のメソッドを追加するだけです。buildView
つまり、フィールドのデータはクリアされていませんが、Twig テンプレートには渡されません。アプローチは異なりますが、結果は同じです。検証に失敗した後、パスワード フィールドは空のままです。
あなたが本当に怠け者であれば、PasswordType を使用できますが、そのフィールドの入力はマスクされるため (*****)、迷惑なキャプチャ フィールドがさらに悪化します。
フォームの種類は次のようになります。
class CaptchaType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildView(FormView $view, FormInterface $form, array $options)
{
$view->vars['value'] = '';
}
/**
* {@inheritdoc}
*/
public function getParent()
{
return __NAMESPACE__.'\TextType';
}
/**
* {@inheritdoc}
*/
public function getName()
{
return $this->getBlockPrefix();
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'captcha';
}
}
編集: CaptchaBundle が同じアプローチを取っていることがわかりました。