2017-04-16 36 views
1

我還是Symfony和Php的新手,所以我使用Symfony文檔中的CheckboxType代碼。顯示覆選框的自定義消息(服務條款/隱私)

如果用戶嘗試註冊並且該複選框未被選中,當前沒有消息出現,但仍會阻止用戶創建帳戶。

(1)我想在紅色旁邊的複選框旁邊顯示一條錯誤消息,說明必須選中該框才能繼續。我也想定製這個消息。

謝謝!

Register.html

{% extends 'base.html.twig' %} 

{% block body %} 
    <div class="container"> 
     <div class="row"> 
      <div class="col-xs-12"> 
       <h1>Register!</h1> 

       {{ form_start(form) }} 
       {{ form_row(form.username) }} 
       {{ form_row(form.email) }} 
       {{ form_row(form.plainPassword.first, { 
        'label': 'Password' 
       }) }} 
       {{ form_row(form.plainPassword.second, { 
        'label': 'Repeat Password' 
       }) }} 
       <a href="https://termsfeed.com/terms-service">Terms of service</a> 
       {{ form_widget(form.termsAccepted) }} 

       <a href="http://t5Project/web/">cancel</a> 

       <button type="submit" class="btn btn-primary" formnovalidate> 
        Register 
       </button> 

       <br></br> 

       <p><a href="https://termsfeed.com/privacy">Privacy Policy</a> 


       {{ form_end(form) }} 
      </div> 
     </div> 
    </div> 
{% endblock %} 

RegistrationForm.php

class UserRegistrationForm extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('email', EmailType::class) 
      ->add('username', TextType::class) 
      ->add('plainPassword', RepeatedType::class, ['type' => PasswordType::class]) 
      ->add('termsAccepted', CheckboxType::class, array(
     'mapped' => false, 
     'constraints' => new IsTrue(),)); 


    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults([ 
      'data_class' => User::class, 
      'validation_groups' => ['Default', 'Registration'] 
     ]); 
    } 
} 

回答

1

的問題是,你正在使用:

{{ form_widget(form.termsAccepted) }} 

渲染的複選框。這隻會渲染窗口小部件,而:

{{ form_row(form.termsAccepted) }} 

所有用戶字段都會使用它,其中包含標籤,窗口小部件和錯誤消息。如果你想保留小部件,例如因爲使用form_row攪亂模板不知何故,你可以渲染單獨使用誤區:

{{ form_errors(form.termsAccepted) }} 

您可能還需要在Form Customization檢查出的文檔。

相關問題