Новое Symfony 2.8: Улучшенные формы

  • 2 года назад

Добавлен новый тип формы Range

В списке встроенных типов форм в Symfony отсутствовало поле формы range из HTML5. Этот новый тип отображается в виде слайдера в тех браузерах, которые поддерживают элементы управления форм HTML5. Используйте атрибуты min и max, чтобы ограничить выбираемые значения:

$builder->add('rating', 'Symfony\Component\Form\Extension\Core\Type\RangeType', [
    'attr' => ['min' => 0, 'max' => 10]
]);

Для типов с коллекциями добавлен параметр prototype_data

Формы, содержащие коллекции, позволяют индивидуально настраивать HTML, используемый для добавления новых элементов (параметр prototype ) и имени заполнителя, используемого в этом шаблоне (параметр prototype_name ). Благодаря параметру prototype_data, Symfony 2.8 также позволяет задавать данные по умолчанию каждого нового ряда коллекции:

$builder->add('tags', 'Symfony\Component\Form\Extension\Core\Type\CollectionType', [
    // ...
    'by_reference' => false,
    'prototype_data' => '...',
]);

Для типов, связанных с данными, добавлен параметр choice_translation_domain

В Symfony 2.7 мы добавили параметр choice_translation_domain, который позволяет определять, как должны преобразовываться выбираемые значения. В Symfony 2.8 этот параметр теперь доступен и для тех типов, которые связаны с данными (DateType, TimeType иDateTimeType`):

$builder->add('publishedAt', 'Symfony\Component\Form\Extension\Core\Type\DateTimeType', [
    // ...
    'choice_translation_domain' => 'messages',
]);

В параметре choice_translation_domain возможны несколько типов значений:

  • true = использовать текущую область преобразования;
  • false = не преобразовывать значения;
  • null = использовать родительскую область преобразования или область по умолчанию;
  • любое другое строковое значение = использовать определенную область преобразования.

Теперь можно возвращать null для query_builder

Иногда нужно отобразить пустой список записей для типов форм entity. В Symfony 2.7 нужно было передать пустой список в его параметр choices. В Symfony 2.8, чтобы отобразить пустой список записей, вы можете вернуть null в замыкании query_builder:

$event->getForm()->add('events', 'Symfony\Component\Form\Extension\Core\Type\EntityType', [
    'class' => 'AppBundle:Event',
    'property' => 'title',
    'query_builder' => function(EntityRepository $er) {
        return $er->getEventQueryBuilder();
    }
]));

// ...

public function getEventQueryBuilder()
{
    if ( ... some condition ... ) {
        return null;
    }

    $qb = $this->getEntityManager()->createQueryBuilder();

    return $qb->select(...)->...;
}

Тема для форм для фреймворка Foundation 5

В Symfony 2.6 мы разработали тему для форм для приложений, использующих популярный фреймворк Bootstrap CSS. В Symfony 2.8 мы расширили нашу поддержку CSS-фреймворков за счет добавления новой темы для форм для CSS-фреймворка Foundation 5 .

Чтобы применить эту тему ко всем своим формам, используйте параметр конфигурации form_themes:

# app/config/config.yml
twig:
    form_themes:
        - 'foundation_5_layout.html.twig'

Комментарии

0