2012-01-06 31 views
7

Tôi muốn chủ đề hình thức của tôi để nhãn của lĩnh vực hiển thị các miền địa phương hiện nay, một cái gì đó giống nhưLàm cách nào để chuyển biến sang form_theme?

Tên (en):

Vì vậy, tôi muốn viết lại generic_label khối như thế:

{# form_theme.html.twig #} 

{% block generic_label %} 
{% spaceless %} 
    {% if required %} 
     {% set attr = attr|merge({'class': attr.class|default('') ~ ' required'}) %} 
    {% endif %} 
    <label{% for attrname,attrvalue in attr %} {{attrname}}="{{attrvalue}}"{% endfor %}>{{ label|trans }} (app.session.locale)</label> 
{% endspaceless %} 
{% endblock %} 

và nhập nó trong mẫu của tôi:

{% form_theme options 'myBundle:Object:form_theme.html.twig' %} 

nhưng biến ứng dụng không thể truy cập được trong mẫu biểu mẫu. Làm cách nào để chuyển biến cho chủ đề biểu mẫu?

Trả lời

0

Nếu biến số app không có sẵn trong chủ đề biểu mẫu, đó có thể là lỗi. Tôi đề nghị bạn create a ticket.

Trong thời gian chờ đợi, bạn có thể sử dụng mẫu hiện tại làm chủ đề. Một cái gì đó như ...

{% form_theme form _self %} 

{% block field_label %} 
    {% set attr = attr|merge({ 'for': id }) %} 
    {% if required %} 
     {% set attr = attr|merge({ 'class': attr.class|default('') ~ ' required' }) %} 
    {% endif %} 
    <label{% for attrname, attrvalue in attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>{{ label|trans }} ({{ app.session.locale }})</label> 
{% endblock %} 

Nếu bạn đang sử dụng Symfony master (2.1) thay thế app.session.locale bằng app.request.locale.

+0

không hoạt động, '{% form_theme edit_form _self%} {% block field_label%} {{app.session.locale}} {% endblock%}' cung cấp 'Biến" ứng dụng " không tồn tại'. Tôi sẽ tạo một vé – Matthieu

+0

https://github.com/symfony/symfony/issues/3058 – Matthieu

3

Trong phiên bản hiện tại của cành cây (cho năm 2016), điều đó là có thể. Trong mẫu của bạn sử dụng sau đây như thế này:

{{ form_row(form.content, {'testvar' : 'this is test variable'}) }} 

Sau đó, trong tập tin chủ đề của bạn, chỉ cần sử dụng:

{{testvar}} 

tất nhiên thay vì form.content bạn sẽ sử dụng tên trường mà bạn cần. Chúc mừng, Chris

Các vấn đề liên quan