簡體   English   中英

Symfony2:生成表單的HTML5屬性

[英]Symfony2: HTML5 attributes for generated form

我是Symfony2的新手,現在正在嘗試構建表單。 我有一個Message類,並且表單中的數據應創建一個Message對象。

我的問題是字段不是必需的,盡管在調用createFormBuilder時已在控制器中明確指定了它。

但是會觸發電子郵件的HTML5驗證程序。

第二個問題是占位符屬性不起作用。 盡管我已在視圖中進行了設置,但它並未添加到字段中。

  1. 控制器動作:

     class ContactController extends Controller { public function indexAction(Request $request) { $message = new Message(); $form = $this->createFormBuilder($message) ->add('Name', 'text', array('required' => true)) ->add('Email', 'email') ->add('Subject', 'text') ->add('Body', 'textarea') ->getForm(); $form->handleRequest($request); if ($form->isValid()) { // data is an array with "name", "email", and "message" keys $data = $form->getData(); } return $this->render('PhotographPhotoBundle:Contact:index.html.twig', array('form' => $form->createView())); } } 
  2. 訊息類別:

     class Message { protected $name; protected $subject; protected $body; protected $email; + setters and getters here } 
  3. 表格模板

      {# src/Photograph/PhotoBundle/Resources/views/Form/fields.html.twig #} {% block field_row %} {% spaceless %} {{ form_errors(form) }} {{ form_widget(form) }} {% endspaceless %} {% endblock field_row %} {% block email_widget %} <input type="email" {{ block('attributes') }} value="{{ value }}" class="field-email form_field"> {% endblock %} {% block text_widget %} <input type="text" {{ block('attributes') }} value="{{ value }}" class="field-name form_field"> {% endblock %} {% block textarea_widget %} <textarea name="field-message" {{ block('attributes') }} cols="45" rows="5" class="field-message form_field">{{ value }}</textarea> {% endblock %} 
  4. 表單視圖

      <form action="{{ path('PhotographPhotoBundle_contact') }}" method="post" class="feedback_form" > {{ form_errors(form) }} {{ form_widget(form.Name) }} <div class="clear"></div> {{ form_widget(form.Email, { 'attr': {'placeholder': 'email' }}) }} <div class="clear"></div> {{ form_widget(form.Subject, { 'attr': {'placeholder': 'sujet' }}) }} <div class="clear"></div> {{ form_widget(form.Body, { 'attr': {'placeholder': 'message' }}) }} <div class="clear"></div> <input value="envoyer votre message" type="submit" class="feedback_go" /> <div class="ajaxanswer"></div> {{ form_end(form) }} 

將所有非必需列的required屬性設置為false,並添加attr屬性以添加占位符

$form = $this->createFormBuilder($message)
    ->add('Name', 'text', array('required' => false))
    ->add('Email', 'email', array('required' => false, 'attr' => array('placeholder' => 'some text here')))
    ->add('Subject', 'text')
    ->add('Body', 'textarea')
    ->getForm();

您的表單主題模板中有一個錯誤。 該塊稱為widget_attributes

{% block text_widget %}
    <input type="text" {{ block('widget_attributes') }} value="{{ value }}" class="field-name form_field">
{% endblock %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM