Добавление сообщений "help" в поля
Я пытаюсь добавить некоторые вспомогательные сообщения после каждого поля в форме в symfony2.
Я прочитал об одном решении в официальных документах: http://symfony.com/doc/current/cookbook/form/form_customization.html#adding-help-messages
Но это решение имеет мало смысла, потому что нам нужно создать всю форму вручную.
Например, легко определить метку: $formBuilder->add('myfieldname', 'text', array('label'=>'some my field label'));
Но как передавать справочные сообщения? (Другими словами, некоторые пользовательские переменные)
Ответы
Ответ 1
$formBuilder->add('myFieldName', 'text', array('help' => 'My Help Message'));
Но он думает, что вам также нужно добавить расширение, которое добавляет это как параметр по умолчанию для всех форм:
https://github.com/simplethings/SimpleThingsFormExtraBundle#helpextension
Это позволяет редактировать атрибуты непосредственно из FormTypes.
Ответ 2
Другой метод без другого расширения:
В вашем классе строителя формы:
$builder->add('yourField',null, array('attr'=>array('help'=>'text help')))
В вашем шаблоне шаблона переписать:
{% block form_row %}
{% spaceless %}
{{ form_label(form) }}
{{ form_widget(form) }}
{% for attrname,attrvalue in attr %}
{% if attrname == 'help' %}
<span class="help-block">{{ attrvalue }}</span>{% endif %}
{% endfor %}
{{ form_errors(form) }}
{% endspaceless %}
{% endblock form_row %}
Ответ 3
Вы можете использовать решение в официальных документах, как описано.
Но работа еще не завершена. Вам необходимо создать расширение типа формы на основе этой статьи: http://symfony.com/doc/current/cookbook/form/create_form_type_extension.html
После завершения создания расширения типа формы вы можете добавить такие сообщения справки:
$form = $this->createFormBuilder()
->add('name', 'text', array(
'help' => 'this is a help message to user',
))
Я думаю, что это родное лучшее решение.
Кроме того, я рекомендую прочитать эту замечательную статью, в которой показано, как включить и установить параметр справки в формах symfony2:
http://toni.uebernickel.info/2012/11/03/how-to-extend-form-fields-in-symfony2.1.html
Ответ 4
Если вы используете Bootstrap для своего проекта, вы можете воспользоваться некоторыми помощниками формы, предоставленными пакетом Mopa Bootstrap Bundle.
Демо: http://bootstrap.mohrenweiserpartner.de/mopa/bootstrap/forms/help_texts
GitHub: https://github.com/phiamo/MopaBootstrapBundle
Пример:
<?php
$form = $this->get('form.factory')
->createNamedBuilder('form_name')
->setMethod('POST')
->add('testSelect', 'choice', [
'choices' => ['val1' => 'Value 1', 'val2' => 'Value 2'],
'required' => true,
'help_block' => 'Here some help text!!!'
])
->add('Save', 'submit')
->getForm();
return $form->createView();