Có thể tạo trường nhập ngày tháng, chỉ với tiện ích con chọn năm trong Symfony 2 FormBuilder hay tôi nên sử dụng trường nhập văn bản đơn giản?Symfony 2 ngày đầu vào chỉ với năm chọn
Trả lời
Bạn có thể sử dụng form customization:
{% block date_widget %}
{% spaceless %}
{% if widget == 'single_text' %}
{{ block('field_widget') }}
{% else %}
<div {{ block('widget_container_attributes') }}>
{{ date_pattern|replace({
'{{ year }}': form_widget(form.year),
'{{ month }}': '',
'{{ day }}': '',
})|raw }}
</div>
{% endif %}
{% endspaceless %}
{% endblock date_widget %}
Cách tiếp cận này đã đem lại cho tôi lỗi với xác nhận:
{{ date_pattern|replace({
'{{ year }}': form_widget(form.year),
'{{ month }}': '',
'{{ day }}': '',
})|raw }}
tôi finallay giải quyết vấn đề bằng cách thêm thuộc tính CSS để ẩn các lĩnh vực:
{{ date_pattern|replace({
'{{ year }}': form_widget(form.year),
'{{ month }}': form_widget(form.month, { 'attr' : { 'style': 'display:none' }}),
'{{ day }}': form_widget(form.day, { 'attr' : { 'style': 'display:none' }}),
})|raw }}
Tôi muốn làm chính xác điều tương tự. Bạn có thể vui lòng giải thích cho tôi cách bạn làm không ?, Tôi có lỗi ** này **: 'Twig_Error_Runtime: Biến" date_widget "không tồn tại ' – Sam
Bạn đã lưu ngày của tôi! Cảm ơn. (Tại sao nó sửa chữa nó?) ps. Câu trả lời hay nhất là [ở đây] (http://stackoverflow.com/questions/10125517/how-to-display-a-month-year-dropdown-in-symfony2/22612012#22612012) – mario
Tốt hơn nên sử dụng loại trường lựa chọn, thay vì hack ngày loại trường hoặc chỉ sử dụng loại trường văn bản.
Sử dụng vài hàm ngày/giờ php cơ bản, bạn sẽ nhận được những gì bạn cần.
Trong FormType:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('yearfield', 'choice',
array(
'required' => true, 'choices' => $this->buildYearChoices()
));
}
public function buildYearChoices() {
$distance = 5;
$yearsBefore = date('Y', mktime(0, 0, 0, date("m"), date("d"), date("Y") - $distance));
$yearsAfter = date('Y', mktime(0, 0, 0, date("m"), date("d"), date("Y") + $distance));
return array_combine(range($yearsBefore, $yearsAfter), range($yearsBefore, $yearsAfter));
}
Một phương pháp đơn giản để có được, ví dụ, một loạt năm năm năm, với một kiểu lựa chọn:
'choices' => array(
Date('Y') => Date('Y'),
Date('Y') - 1 => Date('Y') - 1,
Date('Y') - 2 => Date('Y') - 2,
Date('Y') - 3 => Date('Y') - 3,
Date('Y') - 4 => Date('Y') - 4,
)
Lưu ý rằng là tạo ra lợi nhuận một chuỗi các năm được chọn.
Bạn cũng có thể sử dụng:
'choices' => range(Date('Y') - 4, date('Y'))
Tôi đã viết mã của tôi theo cách này và chèn vào cơ sở dữ liệu là đúng
->add('yearfield', 'datetime', array(
'widget' => 'single_text',
'format' => 'yyyy'
))
Bạn có thể ghi đè 'date_pattern':
{{ form_row(form.fieldName, {'date_pattern': '<span style="display: none;">{{ day }}{{ month }}</span>{{ year }}'}) }}
LƯU Ý! Ẩn các trường có display: none
, Không loại bỏ chúng để vượt qua xác thực.
Kiểm tra câu trả lời này ở đây: How to display a month-year dropdown in Symfony2
Chỉ cần sử dụng một khối date_widget khác nhau (cành lá).
- 1. ngày 29 tháng 2 so với ngày 28 tháng 2 của năm trước
- 2. Localize ngày cành sử dụng Symfony 2
- 3. Biểu mẫu Symfony 2 với danh sách lựa chọn
- 4. Ngày đầu tiên của năm nay
- 5. Cách hiển thị bộ chọn ngày cho android chỉ với các trường tháng và năm?
- 6. symfony 2 tương đương với hàm url_for() trong symfony 1
- 7. Bộ chọn ngày giờ JQuery - Chỉ cần chọn tháng và năm duy nhất
- 8. Bộ chọn ngày của iPhone sẽ chuyển sang năm 2010 vào ngày 27 tháng 12?
- 9. Có thể chọn bộ chọn ngày để trình bày tên năm/tháng/ngày + ngày không?
- 10. Symfony 2 + Doctrine 2 + inheritance
- 11. Tính số năm giữa 2 ngày trong PHP
- 12. Sử dụng Symfony 1.4 bảng sfGuardUser với Symfony 2 SecurityBundle?
- 13. Làm cách nào để có được ngày của năm đầu tiên của năm với SQL?
- 14. Tạo trường ngày chỉ có tháng và năm - Drupal
- 15. symfony 2 đường dẫn lesscss
- 16. Symfony 2 URL trước
- 17. Symfony 2 trên máy ảo
- 18. Cách chọn ngày/tháng và năm từ jquery datepicker
- 19. sqlite chọn với điều kiện vào ngày
- 20. jquery ui datepicker ngày/tháng chỉ, không phải năm lựa chọn
- 21. Định dạng ngày giờ Ngày trong năm
- 22. Sử dụng la bàn/sass với Symfony 2
- 23. Django: Nhóm theo ngày (ngày, tháng, năm)
- 24. Symfony 2 Dependency Injection & autowiring
- 25. Chuyển hướng sau khi đăng nhập vào Symfony 2
- 26. Symfony 2: Đăng nhập vào một tập tin cụ thể
- 27. Tạo ViewHelper trong Symfony 2
- 28. Tính năm từ ngày
- 29. Kết nối Doctrine 2 với MSSQL Đối với SYMFONY 2 Trên Linux
- 30. cách lấy ngày đầu tiên và ngày cuối cùng của số tuần và năm
Cảm ơn sự giúp đỡ của bạn! – szilagyif
Đây là một chút của một hack mà giải quyết vấn đề nhưng không trả lời câu hỏi - làm thế nào để bạn làm điều này với FormBuilder? – Acyra