我是Symfony2的新手,現在我正在嘗試構建表單。我有一個類Message,表單中的數據應該創建一個Message對象。Symfony2:生成表單的HTML5屬性
我的問題是字段不是必需的,雖然我在調用createFormBuilder時在控制器中明確指定了它。
但是會觸發電子郵件的HTML5驗證程序。
而第二個問題是佔位符屬性不起作用。它只是沒有添加到字段中,儘管我已將其設置在視圖中。
控制器動作:
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())); } }
消息類別:
class Message { protected $name; protected $subject; protected $body; protected $email; + setters and getters here }
形式模板
{# 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 %}
形式視圖
<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) }}
所以我只想澄清,你做你自己的表單域模板?它使用默認模板按需運行? – Cerad
我不知道它是否可以使用默認模板 - 我需要一個自定義的模板,所以我甚至沒有嘗試過使用默認的 – Sam
。我從來沒有太多的運氣搞亂字段模板。要好奇看到解決方案。正如@ mansoulx的答案所顯示的那樣,您詢問自定義字段模板並不明顯。我幾乎發佈了同樣的答案。可能考慮將事情縮減到一個領域,並明確實際問題是什麼。 – Cerad