2012-03-14 7 views
13

मुझे अपने फॉर्म में 'फॉर्म-थीम' मेरा डेटाटाइम विजेट पसंद है। मैं इसे इस के साथ एक fields.html.twig फ़ाइल बनाई है:फॉर्मिंग थीमटाइम विजेट सिम्फनी 2

{% block datetime_widget %} 
{% spaceless %} 
    <div {{ block('widget_container_attributes') }}> 
     {{ '{{ day }}-{{ month }}-{{ year }}'|replace({ 
      '{{ day }}': form_widget(form.day), 
      '{{ month }}': form_widget(form.month), 
      '{{ year }}': form_widget(form.year), 
     })|raw }} 
     {{ form_widget(form.hour, { 'attr': { 'size': '1' } }) }} : {{ form_widget(form.minute, { 'attr': { 'size': '1' } }) }} : {{ form_widget(form.second, { 'attr': { 'size': '1' } }) }} 
    </div> 
{% endspaceless %} 
{% endblock datetime_widget %} 

मैं अपने रूप को देखने टेम्पलेट

{% form_theme form 'AcmeDashboardBundle:Form:fields.html.twig' %} 

दिनांक विजेट गाया जाता है में इस लाइन दर्ज किया है। लेकिन तिथि और समय के भाग एक अलग div तत्व में हैं। जो 2 लाइनों में विजेट को तोड़ देता है। मैं एक-दूसरे के बगल में दिनांक और समय का हिस्सा प्रदर्शित करना चाहता हूं।

उत्तर

10

date_widget & time_widget में बनाया (divs के साथ है क्योंकि वे एक लिपटे रहे हैं) या आप अपने रैपिंग divs दूर करने के लिए date_widget & time_widget को फिर से परिभाषित कर सकते हैं का उपयोग किए बिना यह आप datetime_widget को फिर से परिभाषित करना होगा या तो प्राप्त करने के लिए।

यहाँ कैसे पहला विकल्प लागू करने के लिए है:

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

{% block datetime_widget %} 
{% spaceless %} 
    {% if widget == 'single_text' %}1 
     {{ block('field_widget') }} 
    {% else %} 
     <div {{ block('widget_container_attributes') }}> 
      {{ form_errors(form.date.year) }} 
      {{ form_errors(form.date.month) }} 
      {{ form_errors(form.date.day) }} 
      {{ form_errors(form.time) }} 
      {{ form_widget(form.date.year) }} 
      {{ form_widget(form.date.month) }} 
      {{ form_widget(form.date.day) }} 
     {{ form_widget(form.time.hour, { 'attr': { 'size': '1' } }) }}:{{ form_widget(form.time.minute, { 'attr': { 'size': '1' } }) }} 
     </div> 
    {% endif %} 
{% endspaceless %} 
{% endblock datetime_widget %} 

और यहाँ कैसे दूसरा विकल्प लागू करने के लिए है:

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

{% block date_widget %} 
{% spaceless %} 
    {% if widget == 'single_text' %} 
     {{ block('field_widget') }} 
    {% else %} 
     {{ date_pattern|replace({ 
      '{{ year }}': form_widget(form.year), 
      '{{ month }}': form_widget(form.month), 
      '{{ day }}': form_widget(form.day), 
     })|raw }} 
    {% endif %} 
{% endspaceless %} 
{% endblock date_widget %} 

{% block time_widget %} 
{% spaceless %} 
    {% if widget == 'single_text' %} 
     {{ block('field_widget') }} 
    {% else %} 
     {{ form_widget(form.hour, { 'attr': { 'size': '1' } }) }}:{{ form_widget(form.minute, { 'attr': { 'size': '1' } }) }}{% if with_seconds %}:{{ form_widget(form.second, { 'attr': { 'size': '1' } }) }}{% endif %} 
    {% endif %} 
{% endspaceless %} 
{% endblock time_widget %} 

फिर तारीख & बार एक ही div में एक साथ किया जाएगा। जाहिर है आप अपनी वांछित एचटीएमएल

जोड़कर तिथि और समय के बीच कुछ जगह जोड़ सकते हैं उम्मीद है कि मदद करता है!

+0

उत्तर के लिए Thx! यह मुझे बता रहा है कि "परिवर्तनीय 'date_pattern' मौजूद नहीं है" – mattyh88

+0

आह, हां यह आमतौर पर सिम्फनी की डेटटाइप कक्षा से प्राप्त होगा। यह सिर्फ तिथि के प्रारूप को निर्दिष्ट करता है, ताकि आप '{{year}} - {{month}} - {{day}}' के साथ चर को प्रतिस्थापित कर सकें, या – user1207727

+0

जैसा पुनर्व्यवस्थित कर सकते हैं अब मुझे यह त्रुटि मिल रही है: एक हैश कुंजी को एक कोलन (:)। मूल्य का अप्रत्याशित टोकन "विराम चिह्न" ("(" विराम चिह्न "मूल्य के साथ अपेक्षित": ") (मैंने अपनी पहली पोस्ट संपादित की है) – mattyh88