symfony/security-acl dependency is now optional. You need to explicitly require it as a dependency if you are using ACL. ([@dmaicher](https://github.com/dmaicher))CanonicalizeRuntime::getCanonicalizedLocaleForMoment() is deprecated and no-op. It always returns null. ([@dmaicher](https://github.com/dmaicher))sonata-project/form-extensions v1 was removed ([@dmaicher](https://github.com/dmaicher))sonata-project/exporter v2 was removed ([@dmaicher](https://github.com/dmaicher))sonata-project/doctrine-extensions v1 was removed ([@dmaicher](https://github.com/dmaicher))sonata-project/twig-extensions v1 was removed ([@dmaicher](https://github.com/dmaicher))sonata-project/block-bundle v4 was removed ([@dmaicher](https://github.com/dmaicher))sonata_admin.php routing config ([@willemverspyck](https://github.com/willemverspyck))sonata_admin.xml is deprecated ([@willemverspyck](https://github.com/willemverspyck))Request::get() ([@VincentLanglet](https://github.com/VincentLanglet))sonata_type_native_collection or sonata_type_immutable_array when error_bubbling sets to false #2761 ([@sad270](https://github.com/sad270))ImmutableArrayType field and it subfields help message are not displayed ([@sad270](https://github.com/sad270))Admin.setup_sticky_elements and Admin.setup_readmore_elements ([@onEXHovia](https://github.com/onEXHovia))LastModifiedVersionStrategy version strategy ([@onEXHovia](https://github.com/onEXHovia))sonata.admin strings with class constant TaggedAdminInterface::ADMIN_TAG ([@symfonyaml](https://github.com/symfonyaml))_sort_order defaults to 'ASC' ([@mvhirsch](https://github.com/mvhirsch))HttpException with BadRequestHttpException in the validateCsrfToken method to properly reflect an HTTP 400 error for invalid CSRF tokens ([@desarrolla2](https://github.com/desarrolla2))spaceless twig filter ([@dmaicher](https://github.com/dmaicher))FieldDescriptionInterface::TYPE_ENUM ([@onEXHovia](https://github.com/onEXHovia))TranslatableInterface are now correctly translated by the FieldDescriptionInterface::TYPE_ENUM field type ([@zyberspace](https://github.com/zyberspace))RoleSecurityHandler ([@core23](https://github.com/core23))Symfony\Component\HttpKernel\DependencyInjection\Extension usage ([@AirBair](https://github.com/AirBair))Filter::getLabelTranslationParameters implementation ([@VincentLanglet](https://github.com/VincentLanglet))FilterInterface::showFilter ([@VincentLanglet](https://github.com/VincentLanglet))FilterInterface::getLabelTranslationParameters ([@VincentLanglet](https://github.com/VincentLanglet))FilterInterface::withAdvancedFilter ([@VincentLanglet](https://github.com/VincentLanglet))label_translation_parameters option usage ([@VincentLanglet](https://github.com/VincentLanglet))ArgumentValueResolverInterface usage ([@Hanmac](https://github.com/Hanmac))choices_as_values to true on choice type based to be compatible with Symfony 3Form Type to be compatible with Symfony 2.8+Sonata\CoreBundle\Exporter\Exporter from classes to compile to cache to avoid deprecation warningtranslator service before translating.TemplateType to display custom data in the edit/create view. ([@VincentLanglet](https://github.com/VincentLanglet))make:sonata:admin command, now it's passing modelClass and Controller in services tag. ([@eerison](https://github.com/eerison))getListModes method. ([@VincentLanglet](https://github.com/VincentLanglet))sonata_admin.options.default_label_catalogue in favor of sonata_admin.options.default_translation_domain ([@VincentLanglet](https://github.com/VincentLanglet))label_catalogue attribute on sonata_admin tag in favor of translation_domain ([@VincentLanglet](https://github.com/VincentLanglet))catalogue option on fieldDescription in favor of choice_translation_domain for TYPE_CHOICE or value_translation_domain for TYPE_TRANS. ([@VincentLanglet](https://github.com/VincentLanglet))label_catalogue on group configuration in favor of translation_domain ([@VincentLanglet](https://github.com/VincentLanglet))btn_catalogue option on form type in favor of btn_translation_domain ([@VincentLanglet](https://github.com/VincentLanglet))admin key in an item of the sonata_admin.dashboard.groups config ([@VincentLanglet](https://github.com/VincentLanglet))route or a label when an admin is passed in an item of the sonata_admin.dashboard.groups config ([@VincentLanglet](https://github.com/VincentLanglet))item_adds key when configuring the sonata_admin.dashboard.groups config ([@VincentLanglet](https://github.com/VincentLanglet))tree.html.twig template ([@core23](https://github.com/core23))translation_domain attribute on sonata_admin is used to set the admin translation domain. (Unlike the label_catalogue attribute) ([@VincentLanglet](https://github.com/VincentLanglet))sonata_admin tag before any custom call provided in the service configuration. ([@VincentLanglet](https://github.com/VincentLanglet))global_search for admin with non-default code. ([@VincentLanglet](https://github.com/VincentLanglet))code, model_class and controller attribute to the sonata.admin service tag ([@VincentLanglet](https://github.com/VincentLanglet))sonata.admin attributes instead. ([@VincentLanglet](https://github.com/VincentLanglet))symfony/translation-contracts 3.x ([@jordisala1991](https://github.com/jordisala1991))AdminInterface::showInDashboard() method ([@VincentLanglet](https://github.com/VincentLanglet))AdminInterface::showIn() method ([@VincentLanglet](https://github.com/VincentLanglet))ModelsToArrayTransformer::reverseTransform() ([@VincentLanglet](https://github.com/VincentLanglet))AdminInterface::isGranted() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::isGranted() ([@VincentLanglet](https://github.com/VincentLanglet))SecurityHandlerInterface::isGranted() ([@VincentLanglet](https://github.com/VincentLanglet))RoleSecurityHandler::isGranted() ([@VincentLanglet](https://github.com/VincentLanglet))AclSecurityHandler::isGranted() ([@VincentLanglet](https://github.com/VincentLanglet))select column when accessing to the List with AJAX. ([@VincentLanglet](https://github.com/VincentLanglet))src/Resources/views/CRUD/base_list_flat_field.html.twig ([@VincentLanglet](https://github.com/VincentLanglet))src/Resources/views/CRUD/base_list_flat_inner_row.html.twig ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdminExtension::preBatchAction() and AdminExtensionInterface::preBatchAction() (as annotation for BC) to have an extension point on batch actions. ([@7ochem](https://github.com/7ochem))AdminEventExtension::preBatchAction() that dispatches a sonata.admin.event.batch_action.pre_batch_action event with a BatchActionEvent object containing the data ([@7ochem](https://github.com/7ochem))ModelManagerThrowable ([@VincentLanglet](https://github.com/VincentLanglet))CRUDController::handleModelManagerThrowable() ([@VincentLanglet](https://github.com/VincentLanglet))FormTypeFieldExtension::getValueFromFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))CRUDController::handleModelManagerException() ([@VincentLanglet](https://github.com/VincentLanglet))base_template and admin twig variable ([@core23](https://github.com/core23))CRUDController::renderWithExtraParams method ([@core23](https://github.com/core23))CRUDController::addRenderExtraParams method ([@core23](https://github.com/core23))CRUDController::getBaseTemplate method ([@core23](https://github.com/core23))GroupMapper::removeTab and GroupMapper::removeGroup ([@VincentLanglet](https://github.com/VincentLanglet))icheck and to be able to use still choice field mask with the expanded option ([@goetas](https://github.com/goetas))label_catalogue configuration node deprecation message ([@7ochem](https://github.com/7ochem))^3.7.0 ([@tonyaxo](https://github.com/tonyaxo))FieldDescriptionInterface::TYPE_ENUM. ([@phansys](https://github.com/phansys))sonata-project/form-extensions 2.0 ([@jordisala1991](https://github.com/jordisala1991))app.js ([@jordisala1991](https://github.com/jordisala1991))symfony/string instead of doctrine/inflector to convert words from "snake_case" to "camelCase" ([@jordisala1991](https://github.com/jordisala1991))ModelAutocompleteType form field. ([@aleksvaganoff](https://github.com/aleksvaganoff))ModelType form field. ([@jorrit](https://github.com/jorrit))sonata_admin.extensions config with the admin class rather than the model class thanks to admin_implements, admin_instanceof, admin_extends and admin_use options. ([@VincentLanglet](https://github.com/VincentLanglet))excludes, extends, implements, instanceof, uses, admin_implements, admin_instanceof, admin_extends and admin_use options are now available directly when tagging an admin extension. ([@VincentLanglet](https://github.com/VincentLanglet))FormBuilderIterator ([@dmaicher](https://github.com/dmaicher))data-sonata-select2-maximumSelectionLength attribute ([@sterrien](https://github.com/sterrien))doctrine/collections 2 ([@franmomu](https://github.com/franmomu))AbstractAdmin::setSubject() use getModelClass() instead of getClass() to check is the subject is allowed ([@7ochem](https://github.com/7ochem))appendFormFieldElement on nested collection named the same as one of the parent fields ([@fgueguen](https://github.com/fgueguen))Pool::getAdminByClass() when the admin code is different from its service id. ([@tamcy](https://github.com/tamcy))sonata.admin tags are found in the same service definition. ([@tamcy](https://github.com/tamcy))priority attribute. ([@tamcy](https://github.com/tamcy))sonata.admin to a service more than once is deprecated. This is not meant to be supported and will not work as intended, as only one of the tag attributes will be applied to the service. ([@tamcy](https://github.com/tamcy))merge call in twig ([@VincentLanglet](https://github.com/VincentLanglet))AuditReaderInterface generic ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::removeExtension() ([@VincentLanglet](https://github.com/VincentLanglet))select column when accessing to the list with AJAX ([@VincentLanglet](https://github.com/VincentLanglet))psr/log 3.0. ([@jordisala1991](https://github.com/jordisala1991))psr/container 2.0. ([@jordisala1991](https://github.com/jordisala1991))ModelAutocompleteType with different order ([@franmomu](https://github.com/franmomu))ModelManager::getIdentifierValues ([@VincentLanglet](https://github.com/VincentLanglet))ModelManager::getIdentifierFieldNames ([@VincentLanglet](https://github.com/VincentLanglet))ClassUtils::getClass to resolve proxy classes. The ModelManager have to implements the ProxyManagerInterface instead. ([@VincentLanglet](https://github.com/VincentLanglet))sonata-project/doctrine-extensions ^2 ([@VincentLanglet](https://github.com/VincentLanglet))sonata-project/exporter ^3 ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::generateBaseRoutePattern() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::generateBaseRouteName() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::$baseRoutePattern property ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::$baseRouteName property ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\AdminBundle\Form\Type\Filter\*Type except the FilterDataType. ([@VincentLanglet](https://github.com/VincentLanglet))RetrieveAutocompleteItemsAction. ([@Geekimo](https://github.com/Geekimo))^3.6 ([@jordisala1991](https://github.com/jordisala1991))sonata-project/form-extensions. ([@jordisala1991](https://github.com/jordisala1991))doctrine/persistence dependency ([@franmomu](https://github.com/franmomu))async, minimist, ansi-regex and moment, ([@jordisala1991](https://github.com/jordisala1991))Sonata\AdminBundle\Builder\BuilderInterface ([@VincentLanglet](https://github.com/VincentLanglet))getBatchActions() return an empty array when the admin does not have a batch route ([@7ochem](https://github.com/7ochem))empty_boxes option ([@krubenrc](https://github.com/krubenrc))configureActionButtons() is not being called in custom actions. ([@toooni](https://github.com/toooni))Revision class ([@VincentLanglet](https://github.com/VincentLanglet))AuditReaderInterface::findRevision() return type ([@VincentLanglet](https://github.com/VincentLanglet))elements. ([@VincentLanglet](https://github.com/VincentLanglet))base_show_compare template ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::configureActionButtons() phpdoc for phpstan ([@VincentLanglet](https://github.com/VincentLanglet))FormMapper now implements the BlockBundle/FormMapper interface ([@VincentLanglet](https://github.com/VincentLanglet))AdminInterface::getPersistentParameter() ([@VincentLanglet](https://github.com/VincentLanglet))AdminInterface::getSubject() method ([@franmomu](https://github.com/franmomu))final keyword ([@VincentLanglet](https://github.com/VincentLanglet))getPreviousFilter() non nullable ([@VincentLanglet](https://github.com/VincentLanglet))isXmlHttpRequest(), redirectTo(), isPreviewApproved(), isInPreviewMode(), isPreviewDeclined(), validateCsrfToken() signatures. They now require to pass the request as first argument. ([@VincentLanglet](https://github.com/VincentLanglet))SessionFilterPersister::__construct() from SessionInterface to RequestStack ([@franmomu](https://github.com/franmomu))select2 ([@franmomu](https://github.com/franmomu))keep_open option to always keep open a group menu ([@franmomu](https://github.com/franmomu))CRUDController::getRequest() method ([@VincentLanglet](https://github.com/VincentLanglet))FilterData to model the data from a filter ([@franmomu](https://github.com/franmomu))src/Resources/public/images directory ([@jordisala1991](https://github.com/jordisala1991))app.js file ([@jordisala1991](https://github.com/jordisala1991))FilterInterface::apply() to accept a FilterData instance instead of array in argument 4 ([@franmomu](https://github.com/franmomu))app.js file ([@jordisala1991](https://github.com/jordisala1991))app.css file ([@jordisala1991](https://github.com/jordisala1991))src/Resources/public to assets directory. Only necessary assets are exposed to the public dir ([@jordisala1991](https://github.com/jordisala1991))app.css ([@jordisala1991](https://github.com/jordisala1991))jquery-form to v4 ([@jordisala1991](https://github.com/jordisala1991))jquery.scrollto to v2 ([@jordisala1991](https://github.com/jordisala1991))See UPGRADE-4.0.md
ROLE_MYADMIN_HISTORY to access to the history actions ([@VincentLanglet](https://github.com/VincentLanglet))AdminInterface::removeFieldFromShowGroup method ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::removeFieldFromShowGroup method ([@VincentLanglet](https://github.com/VincentLanglet))show. ([@VincentLanglet](https://github.com/VincentLanglet))ListMapper::addIdentifier() is now show ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getAccessMapping visibility ([@VincentLanglet](https://github.com/VincentLanglet))AclSecurityHandlerInterface::addObjectClassAces() signature ([@VincentLanglet](https://github.com/VincentLanglet))AclSecurityHandler::addObjectClassAces() signature ([@VincentLanglet](https://github.com/VincentLanglet))AdminAclManipulator::addAdminClassAces() signature ([@VincentLanglet](https://github.com/VincentLanglet))AdminAclManipulatorInterface::addAdminClassAces() signature ([@VincentLanglet](https://github.com/VincentLanglet))CollectionType for nested fields. ([@VincentLanglet](https://github.com/VincentLanglet))ShowMapper::remove method now correctly remove the field from the groups. ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::searchResultAction() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getSearchResultLink() ([@VincentLanglet](https://github.com/VincentLanglet))AdminInterface::getSearchResultLink() ([@VincentLanglet](https://github.com/VincentLanglet))ROLE_MYADMIN_EDIT ([@VincentLanglet](https://github.com/VincentLanglet))AdminInterface::getAccessMapping method ([@VincentLanglet](https://github.com/VincentLanglet))default_admin_services config key to overwrite the default services provided to all the admin ([@VincentLanglet](https://github.com/VincentLanglet))AdminExtensionInterface::configure() method ([@yann-eugone](https://github.com/yann-eugone))AbstractAdminExtension::configure() method with no content ([@yann-eugone](https://github.com/yann-eugone))AdminFetcher to fetch the Admin service associated to a request ([@franmomu](https://github.com/franmomu))AdminParamConverter to be able to inject an Admin service in a controller ([@franmomu](https://github.com/franmomu))final for method of every abstract classes ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::initialize() and call AdminExtensionInterface::configure() on each extension ([@yann-eugone](https://github.com/yann-eugone))admin_services config key ([@VincentLanglet](https://github.com/VincentLanglet))ProxyQuery::execute() return type; it doesn't require to be an instance of Countable ([@VincentLanglet](https://github.com/VincentLanglet))AdminInterface::initialize() is the last method called ([@dmaicher](https://github.com/dmaicher))admin_services.templates.form is correctly set ([@dmaicher](https://github.com/dmaicher))admin_services.templates.filter is correctly set ([@dmaicher](https://github.com/dmaicher))AdminInterface are only added if there are no calls defined yet ([@dmaicher](https://github.com/dmaicher))do-not-use alias for exporter service. ([@eerison](https://github.com/eerison))display_url.html.twig template ([@VincentLanglet](https://github.com/VincentLanglet))FilterData to use it for forward compatibility with 4.0 ([@franmomu](https://github.com/franmomu))TaggedAdmin::setListModes() ([@VincentLanglet](https://github.com/VincentLanglet))render_breadcrumbs and render_breadcrumbs_for_title Twig functions to render breadcrumbs ([@franmomu](https://github.com/franmomu))ProxyQuery::execute() method to array<object>|(\Traversable<object>&\Countable) ([@VincentLanglet](https://github.com/VincentLanglet))TaggedAdmin::showMosaicButton() ([@VincentLanglet](https://github.com/VincentLanglet))_email_link.html.twig template, use display_email.html.twig instead ([@VincentLanglet](https://github.com/VincentLanglet))display_* templates passing a field_description, you SHOULD pass the option directly instead ([@VincentLanglet](https://github.com/VincentLanglet))breadcrumbs_builder variable passed to Twig templates ([@franmomu](https://github.com/franmomu))ArrayAccess in ModelToIdPropertyTransformer ([@VincentLanglet](https://github.com/VincentLanglet))DatagridBuilderInterface::addFilter phpdoc: The $type MUST be a class-string ([@VincentLanglet](https://github.com/VincentLanglet))display_* templates without passing a field_description ([@VincentLanglet](https://github.com/VincentLanglet))value dimension ([@phansys](https://github.com/phansys))AbstractAdmin::preValidate() method ([@VincentLanglet](https://github.com/VincentLanglet))DatagridInterface::SORT_ORDER constant to use it instead of _sort_order string ([@franmomu](https://github.com/franmomu))DatagridInterface::SORT_BY constant to use it instead of _sort_by string ([@franmomu](https://github.com/franmomu))DatagridInterface::PAGE constant to use it instead of _page string.([@franmomu](https://github.com/franmomu))DatagridInterface::PER_PAGE constant to use it instead of _per_page string ([@franmomu](https://github.com/franmomu))XEditableExtension::FIELD_DESCRIPTION_MAPPING to expose mapping between FieldDescription types and xEditable types ([@franmomu](https://github.com/franmomu))MapperInterface ([@VincentLanglet](https://github.com/VincentLanglet))TemplateRegistryExtension constructor to [@internal](https://github.com/internal) ([@franmomu](https://github.com/franmomu))FieldDescriptionInterface::getOptions() by calls to FieldDescriptionInterface::getOption() in views ([@phansys](https://github.com/phansys))Filter::getOptions() by FilterInterface::getOption() in views ([@phansys](https://github.com/phansys))Session instance from the Request object at AbstractAdmin::getListMode() ([@phansys](https://github.com/phansys))form_help twig block ([@franmomu](https://github.com/franmomu))id parameter instead of calling AdminInterface::getIdParameter() method ([@franmomu](https://github.com/franmomu))field_options of filters ([@franmomu](https://github.com/franmomu))SearchHandler::search(). ([@phansys](https://github.com/phansys))[@internal](https://github.com/internal). ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Admin\AdminHelper service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\SonataConfiguration service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Command\ExplainAdminCommand service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Command\GenerateObjectAclCommand service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Command\ListAdminCommand service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Command\SetupAclCommand service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Admin\BreadcrumbsBuilder service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Event\AdminEventExtension service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Filter\FilterFactory service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Filter\Persister\SessionFilterPersister service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Model\AuditManager service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Search\SearchHandler service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Templating\TemplateRegistry service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Translator\BCLabelTranslatorStrategy service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Translator\Extractor\AdminExtractor service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Translator\FormLabelTranslatorStrategy service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Translator\NativeLabelTranslatorStrategy service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Translator\NoopLabelTranslatorStrategy service alias. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Translator\UnderscoreLabelTranslatorStrategy service alias. ([@franmomu](https://github.com/franmomu))sonata.admin.validator.inline service. ([@franmomu](https://github.com/franmomu))DatagridManagerInterface::getDefaultSortValues(). ([@franmomu](https://github.com/franmomu))TypeGuesserInterface::guess() to return null ([@VincentLanglet](https://github.com/VincentLanglet))Pager::getCurrentPageResults(), Pager::countResults(), Pager::getNbResults() and Pager::getResults() made at block_search_result.html.twig. ([@phansys](https://github.com/phansys))sonata.admin.audit_reader tag for Audit readers. ([@franmomu](https://github.com/franmomu))FieldDescriptionInterface::describesAssociation, FieldDescriptionInterface::describesSingleValuedAssociation, FieldDescriptionInterface::describesCollectionValuedAssociation to abstract the association mapping types. ([@franmomu](https://github.com/franmomu))AbstractFormContractor base class to centralize association form option validation & defaults. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\FieldDescription\BaseFieldDescription class. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\FieldDescription\FieldDescriptionCollection class. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\FieldDescription\FieldDescriptionInterface interface. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\FieldDescription\FieldDescriptionRegistryInterface interface. ([@franmomu](https://github.com/franmomu))AdminPoolLoader passing more than one argument. ([@franmomu](https://github.com/franmomu))AdminPoolLoader service alias. ([@franmomu](https://github.com/franmomu))sonata.admin.audit_reader. ([@franmomu](https://github.com/franmomu))MenuBuilderInterface interface. ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::buildSideMenu() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::buildTabMenu() ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\AdminBundle\Admin\BaseFieldDescription class. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Admin\FieldDescriptionCollection class. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Admin\FieldDescriptionInterface interface. ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Admin\FieldDescriptionRegistryInterface interface. ([@franmomu](https://github.com/franmomu))AbstractAdmin::configureActionButtons() ([@peter-gribanov](https://github.com/peter-gribanov))AbstractAdmin::configureDashboardActions() ([@VincentLanglet](https://github.com/VincentLanglet))AdminExtension::configureDashboardActions() ([@VincentLanglet](https://github.com/VincentLanglet))AdminExtensionInterface::configureDashboardActions() ([@VincentLanglet](https://github.com/VincentLanglet))ListMapper::NAME_ACTIONS to use instead of _action ([@VincentLanglet](https://github.com/VincentLanglet))ListMapper::NAME_SELECT to use instead of select ([@VincentLanglet](https://github.com/VincentLanglet))ListMapper::NAME_BATCH to use instead of batch ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::configureDashboardButtons() ([@VincentLanglet](https://github.com/VincentLanglet))AdminExtension::configureDashboardButtons() ([@VincentLanglet](https://github.com/VincentLanglet))AdminExtensionInterface::configureDashboardButtons() ([@VincentLanglet](https://github.com/VincentLanglet))_select or _batch to determine if a field description is a select or a batch one. You should rely on the name ListMapper::NAME_SELECT or ListMapper::NAME_BATCH instead. ([@VincentLanglet](https://github.com/VincentLanglet))ModelManager::reverseTransform() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::configureActionButtons() ([@VincentLanglet](https://github.com/VincentLanglet))AdminExtensionInterface::configureActionButtons() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdminExtension::configureActionButtons() ([@VincentLanglet](https://github.com/VincentLanglet))ModelManager::modelReverseTransform() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getActionButtons() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::configureFilterParameters() to configure/modify filter parameters ([@dmaicher](https://github.com/dmaicher))FieldDescriptionFactoryInterface to create FieldDescription instances ([@franmomu](https://github.com/franmomu))TypeGuesserInterface to guess the proper FieldDescription type based on its properties ([@franmomu](https://github.com/franmomu))CRUDController::historyCompareRevisionsAction() ([@phansys](https://github.com/phansys))AbstractAdmin::buildForm() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::buildDatagrid() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::buildShow() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::buildList() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::canAccessObject() in favor of AbstractAdmin::hasAccess() ([@VincentLanglet](https://github.com/VincentLanglet))AdminInterface::canAccessObject() ([@VincentLanglet](https://github.com/VincentLanglet))AdminInterface::configureActionButtons() and AbstractAdmin::configureActionButtons() will become protected ([@VincentLanglet](https://github.com/VincentLanglet))ModelManagerInterface::getNewFieldDescriptionInstance() ([@franmomu](https://github.com/franmomu))CRUDController::historyCompareRevisionsAction() ([@phansys](https://github.com/phansys))FilterInterface::filter() method ([@core23](https://github.com/core23))AbstractAdminExtension::configurePersistentParameters() method stub ([@core23](https://github.com/core23))name ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::mergeParameters() to merge parameters but replace them when it's a subarray. ([@willemverspyck](https://github.com/willemverspyck))AbstractAdmin::alterObject() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::createNewInstance() to allow the user to customize how to create their objects. ([@franmomu](https://github.com/franmomu))AbstractAdmin::configurePersistentParameters() ([@VincentLanglet](https://github.com/VincentLanglet))AdminExtensionInterface::configurePersistentParameters() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getObject() ([@VincentLanglet](https://github.com/VincentLanglet))LifecycleHookProviderInterface::preUpdate() ([@VincentLanglet](https://github.com/VincentLanglet))LifecycleHookProviderInterface::preCreate() ([@VincentLanglet](https://github.com/VincentLanglet))LifecycleHookProviderInterface::preDelete() ([@VincentLanglet](https://github.com/VincentLanglet))LifecycleHookProviderInterface::postUpdate() ([@VincentLanglet](https://github.com/VincentLanglet))LifecycleHookProviderInterface::postCreate() ([@VincentLanglet](https://github.com/VincentLanglet))LifecycleHookProviderInterface::postDelete() ([@VincentLanglet](https://github.com/VincentLanglet))ModelManagerInterface::getModelInstance() method in favor of AbstractAdmin::createNewInstance(). ([@franmomu](https://github.com/franmomu))AbstractAdmin::getPersistentParameters() ([@VincentLanglet](https://github.com/VincentLanglet))AdminExtensionInterface::getPersistentParameters() ([@VincentLanglet](https://github.com/VincentLanglet))CRUDController::trans methodAdminInterface::trans methodAbstractAdmin::$translator propertyAbstractAdmin::trans methodAbstractAdmin::transChoice methodAbstractAdmin::getTranslator methodAbstractAdmin::setTranslator methodtranslationDomainBaseBlockService usageattachAdminClass() does not find an admin to attach ([@VincentLanglet](https://github.com/VincentLanglet))Pool::getAdminByFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AdminClassNotFoundException ([@VincentLanglet](https://github.com/VincentLanglet))AdminCodeNotFoundException ([@VincentLanglet](https://github.com/VincentLanglet))TooManyAdminClassException ([@VincentLanglet](https://github.com/VincentLanglet))default: true for the tag sonata.admin to define a default admin for a specific class ([@VincentLanglet](https://github.com/VincentLanglet))RouteCollection::getRouteName ([@VincentLanglet](https://github.com/VincentLanglet))RouteCollectionInterface::getRouteName ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\AdminBundle\Admin\AbstractAdmin::configureFormOptions() to do great stuff. ([@rgrassian](https://github.com/rgrassian))table to override the whole datagrid table in the base_list.html.twig ([@VincentLanglet](https://github.com/VincentLanglet))FieldDescription accessor option ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::alterNewInstance() ([@VincentLanglet](https://github.com/VincentLanglet))DatagridMapper::add($name, $type, $filterOptions = [], $fieldType = null, $fieldOptions = null, $fieldDescriptionOptions = []) to DatagridMapper::add($name, $type, $filterOptions = [], $fieldDescriptionOptions = []) ([@VincentLanglet](https://github.com/VincentLanglet))ProxyQueryInterface::execute(array $params = [], ?int $hydrationMode = null) signature to ProxyQueryInterface::execute() ([@VincentLanglet](https://github.com/VincentLanglet))Pool::hasSingleAdminByClass() ([@VincentLanglet](https://github.com/VincentLanglet))parameters option. ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\AdminBundle\Admin\AbstractAdmin::formOptions property. ([@rgrassian](https://github.com/rgrassian))FieldDescription code option ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getNewInstance() ([@VincentLanglet](https://github.com/VincentLanglet))Pool::setTemplateRegistry() method. ([@franmomu](https://github.com/franmomu))Admin.setup_xeditable(). ([@phansys](https://github.com/phansys))Sonata\AdminBundle\Form\DataTransformer\ModelToIdPropertyTransformer::$property which can be string[] as well ([@dmaicher](https://github.com/dmaicher))AdminHelper::appendFormFieldElement renders nested forms. ([@vladyslavstartsev](https://github.com/vladyslavstartsev))Sonata\AdminBundle\Templating\MutableTemplateRegistryAwareInterface::setTemplate() ([@wbloszyk](https://github.com/wbloszyk))Sonata\AdminBundle\Templating\MutableTemplateRegistryAwareInterface::setTemplates() ([@wbloszyk](https://github.com/wbloszyk))bs (Bosnian) ([@tambait](https://github.com/tambait))sr_Latn & sr_Cyrl (Serbian Latin & Cyrillic script) ([@tambait](https://github.com/tambait))Sonata\AdminBundle\Admin\AbstractAdmin::setTemplate() ([@wbloszyk](https://github.com/wbloszyk))Sonata\AdminBundle\Admin\AbstractAdmin::setTemplates() ([@wbloszyk](https://github.com/wbloszyk))Sonata\AdminBundle\Twig\Extension\SecurityExtension ([@tambait](https://github.com/tambait))Sonata\AdminBundle\Twig\Extension\CanonicalizeExtension ([@tambait](https://github.com/tambait))Sonata\AdminBundle\Twig\Extension\XEditableExtension ([@tambait](https://github.com/tambait))Sonata\AdminBundle\Twig\Extension\RenderElementExtension ([@tambait](https://github.com/tambait))PagerInterface::getCurrentPageResults() ([@VincentLanglet](https://github.com/VincentLanglet))PagerInterface. ([@VincentLanglet](https://github.com/VincentLanglet))default_controller to configure the default controlled used by the admins. ([@franmomu](https://github.com/franmomu))SonataAdminExtension::MOMENT_UNSUPPORTED_LOCALES constant ([@tambait](https://github.com/tambait))SonataAdminExtension::setXEditableTypeMapping() method ([@tambait](https://github.com/tambait))SonataAdminExtension::getXEditableType() method ([@tambait](https://github.com/tambait))SonataAdminExtension::getXEditableChoices() method ([@tambait](https://github.com/tambait))SonataAdminExtension::getCanonicalizedLocaleForMoment() method ([@tambait](https://github.com/tambait))SonataAdminExtension::getCanonicalizedLocaleForSelect2() method ([@tambait](https://github.com/tambait))SonataAdminExtension::isGrantedAffirmative() method ([@tambait](https://github.com/tambait))SonataAdminExtension::renderListElement() method ([@tambait](https://github.com/tambait))SonataAdminExtension::renderViewElement() method ([@tambait](https://github.com/tambait))SonataAdminExtension::renderViewElementCompare() method ([@tambait](https://github.com/tambait))SonataAdminExtension::renderRelationElement() method ([@tambait](https://github.com/tambait))SonataAdminExtension::getTemplate() method ([@tambait](https://github.com/tambait))SonataAdminExtension::getTemplateRegistry() method ([@tambait](https://github.com/tambait))DateOperatorType::TYPE_NULL and DateOperatorType::TYPE_NOT_NULL ([@VincentLanglet](https://github.com/VincentLanglet))PagerInterface::getResults() ([@VincentLanglet](https://github.com/VincentLanglet))Pool definition arguments. ([@franmomu](https://github.com/franmomu))PagerInterface::countResults ([@dmaicher](https://github.com/dmaicher))AbstractAdmin::getDefaultFilterParameters() to get default filter parameters ([@kirya-dev](https://github.com/kirya-dev))Added BaseGroupMapper::removeGroup() ([@VincentLanglet](https://github.com/VincentLanglet))Added BaseGroupMapper::removeTab() ([@VincentLanglet](https://github.com/VincentLanglet))PagerInterface::getNbResults() in favour of countResults() ([@dmaicher](https://github.com/dmaicher))PagerInterface::setNbResults(...) ([@dmaicher](https://github.com/dmaicher))PagerInterface::$nbResults ([@dmaicher](https://github.com/dmaicher))Pool::setAdminServiceIds in favor of passing service ids as argument 2 to the constructor ([@franmomu](https://github.com/franmomu))Pool::setAdminGroups in favor of passing service ids as argument 3 to the constructor ([@franmomu](https://github.com/franmomu))Pool::setAdminClasses in favor of passing service ids as argument 4 to the constructor ([@franmomu](https://github.com/franmomu))CRUDController::configure() method, to configure the associated admin, you should call CRUDController::configureAdmin() instead ([@franmomu](https://github.com/franmomu))TemplateRegistryInterface::TYPE_* constants, they have been moved to FieldDescriptionInterface ([@franmomu](https://github.com/franmomu))AdminExtensionInterface. ([@franmomu](https://github.com/franmomu))CRUD/Association/edit_many_script.html.twig ([@ggabrovski](https://github.com/ggabrovski))BaseFieldDescription::getFieldValue() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractTaggedAdmin::getListModes() ([@VincentLanglet](https://github.com/VincentLanglet))TaggedAdminInterface::getListModes() ([@VincentLanglet](https://github.com/VincentLanglet))RouteCollectionInterface imported from 4.x to ease upgrading process ([@franmomu](https://github.com/franmomu))BaseFieldDescription::construct() to set the field name ([@VincentLanglet](https://github.com/VincentLanglet))getPage() to the PagerInterface ([@VincentLanglet](https://github.com/VincentLanglet))getFirstPage() to the PagerInterface ([@VincentLanglet](https://github.com/VincentLanglet))getLastPage() to the PagerInterface ([@VincentLanglet](https://github.com/VincentLanglet))getNextPage() to the PagerInterface ([@VincentLanglet](https://github.com/VincentLanglet))getPreviousPage() to the PagerInterface ([@VincentLanglet](https://github.com/VincentLanglet))isFirstPage() to the PagerInterface ([@VincentLanglet](https://github.com/VincentLanglet))isLastPage() to the PagerInterface ([@VincentLanglet](https://github.com/VincentLanglet))getNbResults() to the PagerInterface ([@VincentLanglet](https://github.com/VincentLanglet))getLinks() to the PagerInterface ([@VincentLanglet](https://github.com/VincentLanglet))haveToPaginate() to the PagerInterface ([@VincentLanglet](https://github.com/VincentLanglet))getQuery() to the PagerInterface ([@VincentLanglet](https://github.com/VincentLanglet))TaggedAdminInterface ([@VincentLanglet](https://github.com/VincentLanglet))AbstractTaggedAdmin ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::hasFilterPersister() method ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\AdminBundle\Filter\Filter::active property ([@VincentLanglet](https://github.com/VincentLanglet))FieldDescriptionInterface::getFieldValue() ([@VincentLanglet](https://github.com/VincentLanglet))FieldDescriptionInterface::setFieldMapping() ([@VincentLanglet](https://github.com/VincentLanglet))BaseFieldDescription::setFieldMapping() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::getCurrentMaxLink() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::getMaxRecordLimit() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::setMaxRecordLimit() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::getCursor() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::setCursor() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::getObjectByCursor() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::getCurrent() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::getNext() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::getPrevious() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::getFirstIndex() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::getLastIndex() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::getParameters() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::getParameter() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::hasParameter() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractPager::setParameter() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin class with null as third argument ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getManagerType() when no manager type is set ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getFilterPersister() when no filter persister is set ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getModelManager() when no model manager is set ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getDataSource() when no data source is set ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getFormContractor() when no form contractor is set ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getShowBuilder() when no show builder is set ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getListBuilder() when no list builder is set ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getDatagridBuilder() when no datagrid builder is set ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getTranslator() when no translator is set ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getConfigurationPool() when no pool is set ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setValidator() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getValidator() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getSecurityHandler() when no security handler is set ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getMenuFactory() when no menu factory is set ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getRouteBuilder() when no route builder is set ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getLabelTranslatorStrategy() when no label translator strategy is set ([@VincentLanglet](https://github.com/VincentLanglet))string or null as argument 2 constructing FormBuilderIterator ([@franmomu](https://github.com/franmomu))Sonata\AdminBundle\Filter\Filter::getValue() ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\AdminBundle\Filter\Filter::setValue() ([@VincentLanglet](https://github.com/VincentLanglet))_per_page filter parameter is not set ([@VincentLanglet](https://github.com/VincentLanglet))admin_pool to fetch an option instead of sonata_config ([@franmomu](https://github.com/franmomu))AdminHelper::getChildFormBuilder recursively ([@franmomu](https://github.com/franmomu))associated_property ([@franmomu](https://github.com/franmomu))SonataConfiguration class to handle sonata global configuration. ([@franmomu](https://github.com/franmomu))sonata_config to access global configuration from Twig. ([@franmomu](https://github.com/franmomu))BaseFieldDescription::__construct() to do create a FieldDescription with the mapping. ([@franmomu](https://github.com/franmomu))Pool::getGroups() method. ([@franmomu](https://github.com/franmomu))Pool::hasGroup() method. ([@franmomu](https://github.com/franmomu))Pool::getAdminsByGroup() method. ([@franmomu](https://github.com/franmomu))AbstractAdmin::$validator property ([@tambait](https://github.com/tambait))AdminInterface::getValidator method specification ([@tambait](https://github.com/tambait))AdminInterface::setValidator method specification ([@tambait](https://github.com/tambait))AbstractAdmin::getValidator method implementation ([@tambait](https://github.com/tambait))AbstractAdmin::setValidator method implementation ([@tambait](https://github.com/tambait))AddDependencyCallsCompilerPass - validator related keys ([@tambait](https://github.com/tambait))DependencyInjection/Configuration - validator related config option ([@tambait](https://github.com/tambait))Pool::getTitle() method. ([@franmomu](https://github.com/franmomu))Pool::getTitleLogo() method. ([@franmomu](https://github.com/franmomu))Pool::getOption() method. ([@franmomu](https://github.com/franmomu))sonata_admin variable. ([@franmomu](https://github.com/franmomu))FieldDescriptionInterface::setFieldMapping() method. ([@franmomu](https://github.com/franmomu))FieldDescriptionInterface::setAssociationMapping() method. ([@franmomu](https://github.com/franmomu))FieldDescriptionInterface::setParentAssociationMappings() method. ([@franmomu](https://github.com/franmomu))FieldDescriptionInterface::setMappingType() method. ([@franmomu](https://github.com/franmomu))BaseFieldDescription::setMappingType() method. ([@franmomu](https://github.com/franmomu))CRUDController ([@VincentLanglet](https://github.com/VincentLanglet))row_attr to the form_row container. ([@nieuwenhuisen](https://github.com/nieuwenhuisen))AdminSearchCompilerPass in order to configure which admins must support search. ([@phansys](https://github.com/phansys))global_search attribute in sonata.admin tags, which admits boolean values. ([@phansys](https://github.com/phansys))ModelManagerInterface::createQuery method ([@neok](https://github.com/neok))CRUDController::handleXmlHttpRequestSuccessResponse method is now protected ([@nieuwenhuisen](https://github.com/nieuwenhuisen))CRUDController::handleXmlHttpRequestErrorResponse method is now protected ([@nieuwenhuisen](https://github.com/nieuwenhuisen))AdminInterface::validate method specification ([@tambait](https://github.com/tambait))AbstractAdmin:validate method implementation ([@tambait](https://github.com/tambait))AbstractAdmin::attachInlineValidator() method ([@tambait](https://github.com/tambait))AdminExtensionInterface::validate() method specification ([@tambait](https://github.com/tambait))AbstractAdminExtension::validate() method implementation ([@tambait](https://github.com/tambait))Pool::getPropertyAccessor() method. ([@franmomu](https://github.com/franmomu))PropertyAccessor as argument 1 to Sonata\AdminBundle\Admin\AdminHelper constructor. ([@franmomu](https://github.com/franmomu))PropertyAccessor as argument 5 to Sonata\AdminBundle\Action\SetObjectFieldValueAction constructor. ([@franmomu](https://github.com/franmomu))PropertyAccessor as argument 5 to Sonata\AdminBundle\Twig\Extension\SonataAdminExtension constructor. ([@franmomu](https://github.com/franmomu))CRUDController::batchAction() ([@peter-gribanov](https://github.com/peter-gribanov))AdminInterface extends MutableTemplateRegistryAwareInterface instead of TemplateRegistryAwareInterface ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\AdminBundle\Block\AdminSearchBlockService() ([@VincentLanglet](https://github.com/VincentLanglet))NOT_EQUAL operator for StringOperatorType ([@VincentLanglet](https://github.com/VincentLanglet))ModelManagerInterface::modelTransform() method ([@franmomu](https://github.com/franmomu))Admin\AbstractAdmin to configuration optionscollection_by_reference option for AdminType ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\AdminBundle\Templating\AbstractTemplateRegistry ([@wbloszyk](https://github.com/wbloszyk))Sonata\AdminBundle\Templating\MutableTemplateRegistry ([@wbloszyk](https://github.com/wbloszyk))Sonata\AdminBundle\Templating\MutableTemplateRegistryAwareInterface ([@wbloszyk](https://github.com/wbloszyk))collection_by_reference is used instead of by_reference in AdminType in order to know which call should be used between ObjectManipulator::addInstance()andObjectManipulator::setObject()` ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\AdminBundle\Templating\TemplateRegistryAwareInterface to handle instances of TemplateRegistryInterface. ([@wbloszyk](https://github.com/wbloszyk))ModelType, use null for native loading ([@kirya-dev](https://github.com/kirya-dev))Sonata\AdminBundle\Templating\TemplateRegistry:setTemplate() ([@wbloszyk](https://github.com/wbloszyk))Sonata\AdminBundle\Templating\TemplateRegistry:setTemplates() ([@wbloszyk](https://github.com/wbloszyk))DatagridManagerInterface with no replacement ([@VincentLanglet](https://github.com/VincentLanglet))ModelManagerInterface::getDataSourceIterator() ([@VincentLanglet](https://github.com/VincentLanglet))ObjectManipulator ([@peter-gribanov](https://github.com/peter-gribanov))Pool::hasSingleAdminByClass() ([@VincentLanglet](https://github.com/VincentLanglet))FilterInterface::filter() method ([@VincentLanglet](https://github.com/VincentLanglet))Validators::validateEntityName() ([@phansys](https://github.com/phansys))Sonata\AdminBundle\Controller\CRUDController::getRestMethod() method in favor of Symfony\Component\HttpFoundation\Request::getMethod() ([@phansys](https://github.com/phansys))acl_user_manager service explicitly when using friendsofsymfony/user-bundle ([@franmomu](https://github.com/franmomu))acl_user_manager service without implementing AdminAclUserManagerInterface ([@franmomu](https://github.com/franmomu))ModelManagerInterface::addIdentifiersToQuery() ([@phansys](https://github.com/phansys))CRUDController::getRestMethod() respecting Request::getHttpMethodParameterOverride() ([@phansys](https://github.com/phansys))ModelManagerInterface::find() with
ModelManagerInterface::findBy() in order to avoid multiple transactions.
([@phansys](https://github.com/phansys))GenerateObjectAclCommand::__construct()
([@VincentLanglet](https://github.com/VincentLanglet))Pool::getContainer() method.
([@franmomu](https://github.com/franmomu))GenerateObjectAclCommand ([@franmomu](https://github.com/franmomu))getCurrentChild() when calling
getCurrentChildAdmin(). ([@jorrit](https://github.com/jorrit))ModelInterface::getPaginationParameters().
([@franmomu](https://github.com/franmomu))ModelInterface::getSortParameters().
([@franmomu](https://github.com/franmomu))getTargetEntity
([@jordisala1991](https://github.com/jordisala1991))MergeCollectionListener when using the ModelType
form type with the model_manager option set.
([@jorrit](https://github.com/jorrit))Sonata\AdminBundle\Templating\TemplateRegistryAwareInterface with getTemplateRegistry(), hasTemplateRegistry() and setTemplateRegistry() methods ([@wbloszyk](https://github.com/wbloszyk))ModelManagerInterface::supportsQuery() ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\AdminBundle\Admin\AbstractAdmin::hasTemplateRegistry(): bool ([@wbloszyk](https://github.com/wbloszyk))AbstractAdmin::configureExportFields extension point ([@core23](https://github.com/core23))symfony/config 5.1. ([@franmomu](https://github.com/franmomu))symfony/dependency-injection 5.1. ([@franmomu](https://github.com/franmomu))symfony/routing 5.1. ([@franmomu](https://github.com/franmomu))symfony/security-csrf and symfony/asset ^5.1 ([@jordisala1991](https://github.com/jordisala1991))ModelManagerInterface ([@core23](https://github.com/core23))addFormFieldDescription if field role no granted ([@kirya-dev](https://github.com/kirya-dev))Sonata\AdminBundle\Admin\AbstractAdmin::setTemplates() ([@wbloszyk](https://github.com/wbloszyk))Sonata\AdminBundle\Admin\AbstractAdmin::setTemplate() ([@wbloszyk](https://github.com/wbloszyk))ProxyQueryInterface::getUniqueParameterId. ([@franmomu](https://github.com/franmomu))ProxyQueryInterface::entityJoin. ([@franmomu](https://github.com/franmomu))object to AbstractAdmin::toString ([@VincentLanglet](https://github.com/VincentLanglet))null to AbstractAdmin::getUrlSafeIdentifier, AbstractAdmin::getNormalizedIdentifier, AbstractAdmin::getId ([@VincentLanglet](https://github.com/VincentLanglet))GetShortObjectDescriptionAction with an empty objectId. ([@VincentLanglet](https://github.com/VincentLanglet))AdminInterface::isCurrentChild ([@core23](https://github.com/core23))group now correctly use the admin translation domain when using the admin label. ([@VincentLanglet](https://github.com/VincentLanglet))setDefaultOptions methods using Symfony\Component\OptionsResolver\OptionsResolverInterface ([@dmaicher](https://github.com/dmaicher))Sonata\AdminBundle\Model\ModelManagerInterface collection-related methods ([@VincentLanglet](https://github.com/VincentLanglet))callable that does not return Symfony\Component\Routing\Route as $element (2nd argument) to Sonata\AdminBundle\Route\RouteCollection::addElement($code, $element) ([@vladyslavstartsev](https://github.com/vladyslavstartsev))CRUDController::batchAction() ([@phansys](https://github.com/phansys))CRUDController::batchAction() ([@phansys](https://github.com/phansys))doctrine/common 3 ([@jaikdean](https://github.com/jaikdean))Sonata\AdminBundle\Datagrid\ProxyQueryInterface::getSingleScalarResult ([@VincentLanglet](https://github.com/VincentLanglet))base_filter_field.html.twig template ([@franmomu](https://github.com/franmomu))base_inline_edit_field.html.twig template ([@franmomu](https://github.com/franmomu))base_standard_edit_field.html.twig template ([@franmomu](https://github.com/franmomu))edit_array.html.twig template ([@franmomu](https://github.com/franmomu))edit_boolean.html.twig template ([@franmomu](https://github.com/franmomu))edit_file.html.twig template ([@franmomu](https://github.com/franmomu))edit_integer.html.twig template ([@franmomu](https://github.com/franmomu))edit_sonata_type_immutable_array.html.twig template ([@franmomu](https://github.com/franmomu))edit_string.html.twig template ([@franmomu](https://github.com/franmomu))edit_text.html.twig template ([@franmomu](https://github.com/franmomu))BaseFieldDescription::setHelp() and BaseFieldDescription::getHelp() ([@franmomu](https://github.com/franmomu))help option to BaseFieldDescription::setOptions() ([@franmomu](https://github.com/franmomu))FormMapper::setHelps() and FormMapper:: addHelp() ([@franmomu](https://github.com/franmomu))help option to FormMapper::add() third argument containing HTML code without also passing help_html with true value ([@franmomu](https://github.com/franmomu))null or an instance of EngineInterface as argument 2 when instantiating Sonata\AdminBundle\Block\AdminListBlockService, Sonata\AdminBundle\Block\AdminSearchBlockService or Sonata\AdminBundle\Block\AbstractBlockService ([@VincentLanglet](https://github.com/VincentLanglet))ModelManagerInterface::getParentFieldDescription. ([@franmomu](https://github.com/franmomu))SonataAdminExtension::getValueFromFieldDescription() ([@jorrit](https://github.com/jorrit))Resources/views/CRUD/Association/edit_many_script.html.twig to "application/json" to prevent 406 (Not acceptable) error. ([@nieuwenhuisen](https://github.com/nieuwenhuisen))getNewInstance() on Admin instance before extracting translatable strings. ([@jorrit](https://github.com/jorrit))datetime field type as editable ([@peter-gribanov](https://github.com/peter-gribanov))date and datetime in the same timezone ([@peter-gribanov](https://github.com/peter-gribanov))FieldDescriptionInterface::getTargetModel() exists before calling it. ([@franmomu](https://github.com/franmomu))AdminExtractor to extract translations from the Admin classes ([@franmomu](https://github.com/franmomu))AdminExtractor class for JMSTranslationBundle integration ([@franmomu](https://github.com/franmomu))[] value for every non-nullable array class properties ([@VincentLanglet](https://github.com/VincentLanglet))mb_strlen() on null in RetrieveAutocompleteItemsAction ([@mar20](https://github.com/mar20))twig/extra-bundle from require to suggest
([@wbloszyk](https://github.com/wbloszyk))u filter when twig/extra-bundle is not registred
([@wbloszyk](https://github.com/wbloszyk))StringOperatorType
([@napestershine](https://github.com/napestershine))null argument for StringExtension constructorar translationsbg translationsca translationscs translationsde translationses translationseu translationsfa translationshr translationshu translationsit translationsja translationslb translationslt translationslv translationsno translationspl translationspt translationspt_BR translationsro translationsru translationssk translationssl translationssv_SE translationstr translationsuk translationszn_CH translationsgetFormFieldDescriptions, getFormFieldDescription and
hasFormFieldDescription doesn't build form anymore if the build already
started, avoiding an infinite loop.getShowFieldDescriptions, getShowFieldDescription and
hasShowFieldDescription doesn't build show anymore if the build already
started, avoiding an infinite loop.getListFieldDescriptions, getListFieldDescription and
hasListFieldDescription doesn't build list anymore if the build already
started, avoiding an infinite loop.getFilterFieldDescriptions, getFilterFieldDescription and
hasFilterFieldDescription doesn't build datagrid anymore if the build
already started, avoiding an infinite loop.sonata_admin.options.legacy_twig_text_extension configurationALL role needs to be checked separately, otherwise the AuthorizationChecker return false all the time.var keyword to explicitly define the "showMaskChoiceEl" variable_ALL role check to RolesecurityHandleraria-hidden="true"FieldDescriptionInterface::getParent().FieldDescriptionInterface::getAssociationAdmin().FieldDescriptionInterface::getAdmin().sonata-icheck and sonata-select2 when iCheck or Select2 are
enabled.Sonata\AdminBundle\EventListener\AssetsInstallCommandListener to add
sonatacore asssets when SonataCoreBundle is not installed_action list field.truncate filter with u filter.sonata.admin.configuration.legacy_twig_text_extension when
SonataCoreBundle is not installedAbstractAdmin::getChild() when there is no child.BaseFieldDescription::getParent() when there is no parent.BaseFieldDescription::getAssociationAdmin() when there is no
association admin.BaseFieldDescription::getAdmin() when there is no admin.Pool::getAdminByClass() when there is no admin for the class.Sonata\AdminBundle\Twig\Extension\UnicodeString in favor of
Symfony\Component\String\UnicodeString.sonata_truncate in favor of u.truncate.FieldDescriptionInterface::getTargetEntity() in favor of
FieldDescriptionInterface::getTargetModel();AdminHelper::getEntityClassName() in favor of
AdminHelper::getModelClassName();GenerateObjectAclCommand::getUserEntityClass() in favor of
GenerateObjectAclCommand::getUserModelClass().--user_entity option in favor of --user_model at
sonata:admin:generate-object-acl command.SonataCoreBundle dependenciesTemplateRegistry::TYPE_* constant to be used instead of string value.format option for time field type.object variable in history compare view.label_catalogue correctly use the default value
default_label_catalogueicon correctly use the default value default_iconinline => natural option.smallint type for template ; use integer instead.bigint type for template ; use integer instead.decimal type for template ; use float instead.text type for template ; use string instead.AbstractAdmin::configureDefaultSortValues to override $datagridValues.AbstractAdminExtension::configureDefaultSortValues to override $datagridValues.legacy_twig_text_extension deprecation message.trans method of AbstractAdminone_to_many, many_to_many, many_to_one and one_to_one type templates.doctrine/inflection to ^1.4 || ^2.0showMapper and listMapper.AbstractAdmin::maxPerPage propertyAbstractAdmin::setMaxPerPage methodAbstractAdmin::perPageOption propertyAbstractAdmin::setPerPageOption methodAbstractAdmin::predefinePerPageOptions methodAbstractAdmin::datagridValues propertyModelManagerInterface without implementing DatagridManagerInterfaceSonata\AdminBundle\Admin\AdminHelper instance to
Sonata\AdminBundle\Form\Type\AdminType::__construct()AbstractAdmin::getParentFieldDescription if the value is null.AbstractAdmin::getSubject if the value is null.AbstractAdmin::getListFieldDescription if the value is null.AbstractAdmin::getParent if the value is null.parentSubject in case of multiple calls to the AppendFormFieldElementAction.label => false doesn't lead to a missing '' translation in the profiler.label => '0' and others non nullable falsy value are not overridden anymore.Sonata\AdminBundle\Filter\FilterInterface::getRenderSettings().AbstractAdmin::IsCurrentChild methoddisplay, key_translation_domain and
value_translation_domain) to the array field on Show and List pages.sortable, sort_parent_association_mappings, and
sort_field_mapping when associated_property is set in ListMapper::add
to enable sorting on associated_property by default.AbstractAdmin::GetCurrentChild methodgetModelIdentifier in favor of getIdentifierFieldNames in
ModelManagerInterface.array in
AbstractAdmin::getFormGroups(), AbstractAdmin::getFormTabs(),
AbstractAdmin::getShowTabs(), AbstractAdmin::getShowGroups().SimplePager::getResults will not return ArrayCollection in next major
version (4.0)AbstractAdmin::isGranted().void in some methods which are intended to return a value
or null.UrlGeneratorInterface::generateMenuUrl().AdminHelper::addNewInstance to detect methods based on method_exists
instead of callable to maintain previous BC behavior.$this->getSubject() always returns a value in configureFormFieldlink_parameters for list action button. This option is
passed to generateObjectUrl.sonata_admin.options.legacy_twig_text_extension in order to control which
text extension will be used;truncate.cut and truncate.ellipsis option in list_html.html.twig
and show_html.html.twig views.SonataAdminExtension with an instance of TranslationInterface
from componentslist_html.html.twig and show_html.html.twig views;sonata_admin.options.legacy_twig_text_extension as false.configureQuery method for an easier way to override Admin list queries.createQuery method.AbstractSonataAdminExtensionAccept HTTP header, even if multiple types are provided.isGranted_sort_by filter to not be initially defined.isGranted_sort_by without _sort_order does not use invalid value anymoresonata_help when it is actually usedifEnd throws LogicException if there is nothing to end.ContainerBuilder::getDefinition() with ids which have no associated
definition.sonata.admin.manager tag to services implementing ModelManagerInterface.EqualOperatorTypesonata_help in form typesFormBuilderInterface to FormMapperFilter to be compatible with Symfony 2.8+Filter Operator to be compatible with Symfony 2.8+sonata_type_model_list_widget after operations
add/list/removedoctrine/doctrine-bundle 2bin/console list or just bin/consolesonata.admin.block.stats\ArrayAccess at AbstractAdmin::buildForm().transchoice() Twig filter at block_stats.html.twig{% trans %} Twig tag for pluralized catalogs with
symfony/translation < 4.2.CRUDController::validateCsrfToken to validate tokens not only from a POST
request, but GET as wellCRUDController::validateCsrfToken to accept missing request token.strict_variables enabledtranschoice tags with transsonata-project/block-bundle (3.11 => 3.17).format option to show type transTemplateRegistry::hasTemplate() in order to know if a template with a given name is registered.Sonata\AdminBundle\Admin\AdminHelper;Sonata\AdminBundle\Admin\Extension\LockExtension;Sonata\AdminBundle\Admin\FieldDescriptionCollection;Sonata\AdminBundle\Admin\Pool;Sonata\AdminBundle\Annotation\Admin;Sonata\AdminBundle\Block\AdminListBlockService;Sonata\AdminBundle\Block\AdminSearchBlockService;Sonata\AdminBundle\Block\AdminStatsBlockService;Sonata\AdminBundle\Command\ExplainAdminCommand;Sonata\AdminBundle\Command\GenerateAdminCommand;Sonata\AdminBundle\Command\GenerateObjectAclCommand;Sonata\AdminBundle\Command\ListAdminCommand;Sonata\AdminBundle\Command\SetupAclCommand;Sonata\AdminBundle\Command\Validators;Sonata\AdminBundle\Datagrid\Datagrid;Sonata\AdminBundle\Datagrid\DatagridMapper;Sonata\AdminBundle\Datagrid\ListMapper;Sonata\AdminBundle\Datagrid\SimplePager;Sonata\AdminBundle\DependencyInjection\Compiler\AddDependencyCallsCompilerPass;Sonata\AdminBundle\DependencyInjection\Compiler\AddFilterTypeCompilerPass;Sonata\AdminBundle\DependencyInjection\Compiler\ExtensionCompilerPass;Sonata\AdminBundle\DependencyInjection\Compiler\GlobalVariablesCompilerPass;Sonata\AdminBundle\DependencyInjection\Compiler\ModelManagerCompilerPass;Sonata\AdminBundle\DependencyInjection\Configuration;Sonata\AdminBundle\DependencyInjection\SonataAdminExtension;Sonata\AdminBundle\Event\AdminEventExtension;Sonata\AdminBundle\Event\ConfigureEvent;Sonata\AdminBundle\Event\ConfigureMenuEvent;Sonata\AdminBundle\Event\ConfigureQueryEvent;Sonata\AdminBundle\Event\PersistenceEvent;Sonata\AdminBundle\Exception\LockException;Sonata\AdminBundle\Exception\ModelManagerException;Sonata\AdminBundle\Exception\NoValueException;Sonata\AdminBundle\Export\Exporter;Sonata\AdminBundle\Filter\FilterFactory;Sonata\AdminBundle\Form\ChoiceList\ModelChoiceLoader;Sonata\AdminBundle\Form\DataTransformer\ArrayToModelTransformer;Sonata\AdminBundle\Form\DataTransformer\LegacyModelsToArrayTransformer;Sonata\AdminBundle\Form\DataTransformer\ModelToIdPropertyTransformer;Sonata\AdminBundle\Form\DataTransformer\ModelToIdTransformer;Sonata\AdminBundle\Form\DataTransformer\ModelsToArrayTransformer;Sonata\AdminBundle\Form\EventListener\MergeCollectionListener;Sonata\AdminBundle\Form\Extension\ChoiceTypeExtension;Sonata\AdminBundle\Form\Extension\Field\Type\FormTypeFieldExtension;Sonata\AdminBundle\Form\Extension\Field\Type\MopaCompatibilityTypeFieldExtension;Sonata\AdminBundle\Form\FormMapper;Sonata\AdminBundle\Form\Type\AclMatrixType;Sonata\AdminBundle\Form\Type\AdminType;Sonata\AdminBundle\Form\Type\ChoiceFieldMaskType;Sonata\AdminBundle\Form\Type\CollectionType;Sonata\AdminBundle\Form\Type\Filter\ChoiceType;Sonata\AdminBundle\Form\Type\Filter\DateRangeType;Sonata\AdminBundle\Form\Type\Filter\DateTimeRangeType;Sonata\AdminBundle\Form\Type\Filter\DateTimeType;Sonata\AdminBundle\Form\Type\Filter\DateType;Sonata\AdminBundle\Form\Type\Filter\DefaultType;Sonata\AdminBundle\Form\Type\Filter\NumberType;Sonata\AdminBundle\Form\Type\ModelAutocompleteType;Sonata\AdminBundle\Form\Type\ModelHiddenType;Sonata\AdminBundle\Form\Type\ModelListType;Sonata\AdminBundle\Form\Type\ModelReferenceType;Sonata\AdminBundle\Form\Type\ModelType;Sonata\AdminBundle\Generator\AdminGenerator;Sonata\AdminBundle\Generator\ControllerGenerator;Sonata\AdminBundle\Guesser\TypeGuesserChain;Sonata\AdminBundle\Manipulator\ServicesManipulator;Sonata\AdminBundle\Menu\Matcher\Voter\ActiveVoter;Sonata\AdminBundle\Menu\Matcher\Voter\AdminVoter;Sonata\AdminBundle\Menu\MenuBuilder;Sonata\AdminBundle\Menu\Provider\GroupMenuProvider;Sonata\AdminBundle\Model\AuditManager;Sonata\AdminBundle\Route\AdminPoolLoader;Sonata\AdminBundle\Route\DefaultRouteGenerator;Sonata\AdminBundle\Route\PathInfoBuilder;Sonata\AdminBundle\Route\QueryStringBuilder;Sonata\AdminBundle\Route\RouteCollection;Sonata\AdminBundle\Route\RoutesCache;Sonata\AdminBundle\Route\RoutesCacheWarmUp;Sonata\AdminBundle\Search\SearchHandler;Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap;Sonata\AdminBundle\Security\Acl\Permission\MaskBuilder;Sonata\AdminBundle\Security\Handler\AclSecurityHandler;Sonata\AdminBundle\Security\Handler\NoopSecurityHandler;Sonata\AdminBundle\Security\Handler\RoleSecurityHandler;Sonata\AdminBundle\Show\ShowMapper;Sonata\AdminBundle\SonataAdminBundle;Sonata\AdminBundle\Translator\BCLabelTranslatorStrategy;Sonata\AdminBundle\Translator\Extractor\JMSTranslatorBundle\AdminExtractor;Sonata\AdminBundle\Translator\FormLabelTranslatorStrategy;Sonata\AdminBundle\Translator\NativeLabelTranslatorStrategy;Sonata\AdminBundle\Translator\NoopLabelTranslatorStrategy;Sonata\AdminBundle\Translator\UnderscoreLabelTranslatorStrategy;Sonata\AdminBundle\Twig\Extension\SonataAdminExtension;Sonata\AdminBundle\Twig\GlobalVariables;Sonata\AdminBundle\Util\AdminAclManipulator;Sonata\AdminBundle\Util\AdminObjectAclData;Sonata\AdminBundle\Util\AdminObjectAclManipulator;Sonata\AdminBundle\Util\FormBuilderIterator;Sonata\AdminBundle\Util\FormViewIterator.Datagrid::getFilter();TemplateRegistry::getTemplate();AbstractAdmin::getActiveSubClass() and AbstractAdmin::getActiveSubclassCode() when there is no active subclass.void instead of null in functions which are capable to return values.ModelManagerCompilerPass & ObjectAclManipulatorCompilerPass to avoid crashing when there's services with numerical idsAbstractAdmin::toString() from base_list.htm.twig when the admin's subject doesn't declare __toString() method.AdminSearchBlockService.ListMapper::add() are
cast to boolean before using them to infer if the field must be used as
identifier or not.Pool::getAdminByAdminCode();Pool::getAdminByAdminCode().ListMapper::add(), DatagridMapper::add(),
ShowMapper::add() and FormMapper::add(); in order to restrict the content
rendering based on the provided role.{% spaceless %} tag, which is deprecated as of Twig 1.38
with {% apply spaceless %} filter{% for .. if .. %}, which is deprecated as of Twig 2.10
with filter filter'<title> tag, which is truncated to 15 characters.ListMapper::add() are
cast to boolean before using them to infer if the field must be used as
identifier or not.ListMapper::add().AdminBundle\Menu\Matcher\Voter\ChildrenVoterAbstractAdmin::configureDatagridFiltersShowMapper::removeGroup methodmargin-left: -20px of checkbox.$container to $adminPool in Twig/GlobalVariablesRuntimeException instead of non existing RunTimeExceptionAbstractAdmin::setSubject in order to check that given $subject matches registered admin class entity.AbstractAdmin::configureActionButtonsAbstractAdmin::configureActionButtonsAbstractWidgetTestCase$container property in Twig/GlobalVariablesread_only option on Twig with Symfony 3sonata_top_nav_menu contentsAclMatrixTypeAclMatrixTypestandard_layout.html.twigTemplate "[@SonataAdmin](https://github.com/SonataAdmin)/CRUD/base_edit_form.html.twig" cannot be used as a trait.
(second attempt)Template "[@SonataAdmin](https://github.com/SonataAdmin)/CRUD/base_edit_form.html.twig" cannot be used as a trait.<time> tags, which print the dates in UTC using datetime and title
attributes, allowing to view the UTC date with the default browser tooltip.de_DE localeSonata\Exporter\Source\SourceIteratorInterfacegetSearchResultLink that choses the best way to link to a
search result; eg. edit if available, or show.show_label option not being honored when set to false_page and _per_page from request<time> tags, which print the dates in UTC using datetime and title
attributes, allowing to view the UTC date with the default browser tooltip.__toString method.Metadata class from block bundlesonata_type_collection fields no longer deletes row when adding a new rowErrorElementnull as an admin class nameSonata\AdminBundle\Object\Metadata classsonata-project/exporter 2strict_types declaration in generated codeAdmin::getObjectMetadata return type in PHPDocmake:sonata:admintemplate option to admin batchActionsModelAutocompleteType and does not have a
create routeAdminInterface::setSecurityHandler()strict_variables mode is enabledheader_style optionAdminType tabs ids when used in collectionslink_editsonata_help on many form typemake:sonata:admin not workingAdmin object reference to javascript window objectRuntimeException message for Create and Show actions from CRUDControllerPool::getInstance will always return a valid admin instanceSONATA_CONFIG and SONATA_TRANSLATIONSselect2.full.js file is needed)Sonata\AdminBundle\Form\Type\ModelTypeList is deprecated for ModelListTypetranslation_domain in tab menuModelAutocompleteType::getParent overrideread_only option definition from ModelAutocompleteTypezh_HK (Traditional Chinese).getNbResults return negative result, if there where no resultssymfony/class-loader into require-dev section of composerAdmin::getUniqid() to generate HTML tab idCreateClassCacheCommand is deprecatedconfigureFormFields() methodlink_edit in Dutch translation file.SonataAdminBundle\Controller\HelperController is now deprecated in favor of actionsModelAutocompleteTypetitle to sidebar toggleToggle NavigationgetFieldGetterKey in order remove the new warning produced by PHP7.2.Controller\CoreController is now deprecated in favor of Action\{Search,Dasbhoard}Actionassets.javascripts at Configuration::getConfigTreeBuilder()appendFormFieldElementAction and retrieveFormFieldElementAction using ModelManager instead getObject admin class methodToggle Navigationjquery.js:250 Uncaught Error: cannot call methods on button prior to initialization; while trying to use $.fn.button() (ref: https://github.com/twbs/bootstrap/issues/6094)AbstractAdmin::addChild now accepts 2nd parameter with parent namegetTemplate() method in an Admin was no longer called by Sonata.Sonata\AdminBundle\Filter\Persister\FilterPersisterInterface to externalise filter persistence to a dedicated classSonata\AdminBundle\Filter\Persister\SessionFilterPersister to store filters to session (as done now)TemplateRegistry, TemplateRegistryInterface and MutableTemplateRegistryInterface to handle all template registration related functionality from both AbstractAdmin and Pool.required option to editable list choicesearch option to enable/disable the search form in the sidebarSonata\AdminBundle\Admin\AbstractAdmin::getFilterParameters to use the configured filter persister componentside_bar_after_nav_content block is now empty by defaultAbstractAdmin methods getTemplate and getTemplates.AbstractAdmin attribute $templates.Pool methods getTemplate, setTemplates and getTemplates.Pool attribute $templates.get_pool_template.Toggle NavigationChoiceFieldMaskType now works on inline table collectionsEnvironment::loadTemplate() method with Environment::load() in SonataAdminExtension.SonataAdminExtension::output(). Now using the private render() method. Please use the render*() methods instead.FieldDescription null check missing in ModelAutocompleteFiltergetFieldValue from BaseFieldDescription can now handle getting a value from null objects.base_list template includes the configurable button_create template rather than the default create_button.html.twig.ModelAutocompleteType can now be used without a linked admin classAbstractAdmin::preValidate by relying on form event listenerChoiceFieldMaskType option map is invalid or emptyChoiceFieldMaskType when option expanded is trueadmin variable in Twig can now use the get_admin_template function correctly.getOwnerPermissions to AdminObjectAclDatamoment or select2$filter->apply if the filter is "active" on the datagrid list$filter->apply if the filter has a value that is not empty stringchildrenToggle navigationsafe_label option to allow HTML pass-through on autocomplete form typerequest attribute deprecation on knp_menu.votersymfony/assetAbstractAdmin::addSubClass()Select button is always visible and has a primary check style in sonata_type_model_list popups$context argument of AdminInterface::createQuery was deprecatedAbstractAdmin::getSearchResultLinksonata.admin and sonata.admin.filter.type are now publicAbstractAdmin::getClass() method::class constantsCRUDController::redirectToList method for all list redirectionsCRUDController::batchActionsrc/Resources/views/standard_layout.html.twig template in order to remove whitespace rendering before HTML DOCTYPE declaration.ChildrenVoter classsonata.admin.menu.matcher.voter.children serviceCRUDController::renderWithExtraParams as a replacement for the render methodCRUDController::renderController::render which is supposed to be finalAbstractAdmin::getSubject() behavior when id parameter is not specifiedChoiceType uses to avoid collisions on Form filter classesCRUDController::render()DateTimeType and DateType filterssecurity configuration keytranslation_domain key to AdminStatsBlockService to change or disable translationadd button in sonata_type_model_autocompletesrc, tests and docsCRUDController::addFlash which is final in SF 3.4.AbstractAdmin::hasSubject is now populating AbstractAdmin::$subject propertySymfony\Component\DependencyInjection\DefinitionDecoratorSonata\AdminBundle\Admin\AdminInterface was split into smaller interfaces.AdminInterface::$baseCodeRoute and AdminInterface::setBaseCodeRoute(...).UrlGeneratorInterfacesonata_help for form subfieldssonata_type_immutable_array form groupblock_search_result.html.twigPool::getAdminByAdminCode() was called with an invalid child path.priority option in sonata_admin extensions configtranslation_domain twig variable. The value must change depending if the item has on_top set to true or false.ChildDefinition instance when possible instead of DefinitionDecorator which got deprecated on Symfony 3.3ModelChoiceList in favor of ModelChoiceLoaderServiceManipulator now adds public: true to service declaration by defaultview_group variable in show templateaddClassesToCompileemail on the listAbstractAdmin::configureBatchActions methodAbstractAdmin to a separate classAbstractAdmin::getSearchResultLink methodAbstractAdmin::showMosaicButton methodshow_mosaic_button option to configurationAbstractAdmin::configureBatchActions is now deprecatedAbstractAdmin::getBreadcrumbs is deprecated in favor of BreadcrumbsBuilder::getBreadcrumbsAbstractAdmin::buildBreadcrumbs is deprecatedAbstractAdmin::$breadcrumbs is deprecatedAbstractAdmin::getSubjectlist__select.html.twiglist__select.html.twigPool::getAdminsByGroup() for the new admin groups valueson_top optionempty_boxes with 3 variable: show, hide, fadeModelAutocompleteFiltersonata.admin.form.type.model_listListMapperclass option for field description\Sensio\Bundle\GeneratorBundle\Command\Helper\QuestionHelper when you run command "sonata:admin:generate-object-acl".ModelType have choices as values by default now on SF 2.7+.LIST role can access the autocomplete items by configuring the target_admin_access_action optionisSuperior key on FormView erroronTop parameter on [@Admin](https://github.com/Admin) annotationkeep_open option to keep menu group always openfield_description comparison in base_list_field.html.twigtitle_showFieldDescription::Name and property_path in AdminTypetitle_showlabel => false to ShowMapper::add()sonata/exporter constraint has been bumped to ^1.7ChoiceFieldMaskTypestandard_layoutxEditableTypelabel and translation_domain fallback for batch actionsJMSDiExtraBundleattributes parameter for url field typesonata_type_modelCoreController classJMSDiExtraBundle default configurationDashboardVIEW instead of SHOWHelperControllerhasAccess instead of isGranteddoctrine_orm_model_autocompleteaction in base_list_field.html.twigActiveVoter and ChildrenVoter to only work with menu items having the SonataAdminBundle extra set.AbstractAdminCollectionType the related fields are now disabled to avoid preventing submission of the form when one of those inputs is required.isGranted() by hasAccess() or checkAccess()sonata-project/exporter instead.JMSDiExtraBundle annotations is now discouraged in favor of doing it manually--services default-value to null in Sonata\AdminBundle\Command\GenerateAdminCommandModelToArrayTransformer::$choiceList propertyModelToArrayTransformer::$choiceList::__construct() three-argument-signature is deprecatedrequest parameter is passed to custom batch actions.ModelManagerThrowable ([@VincentLanglet](https://github.com/VincentLanglet))CRUDController::handleModelManagerThrowable() ([@VincentLanglet](https://github.com/VincentLanglet))CRUDController::handleModelManagerException() ([@VincentLanglet](https://github.com/VincentLanglet))merge call in twig ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::removeExtension() ([@VincentLanglet](https://github.com/VincentLanglet))select column when accessing to the list with AJAX ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getAccess() ([@core23](https://github.com/core23))ModelAutocompleteType with different order ([@franmomu](https://github.com/franmomu))AbstractAdmin::getAccessMapping() ([@core23](https://github.com/core23))psr/log ^2.0. ([@jordisala1991](https://github.com/jordisala1991))[@ParamConverter](https://github.com/ParamConverter) annotation for injecting admin services ([@franmomu](https://github.com/franmomu))RetrieveAutocompleItemsAction when used with an array of property ([@VincentLanglet](https://github.com/VincentLanglet))list_action_button_content ([@VincentLanglet](https://github.com/VincentLanglet))ROLE_* roles by the RoleSecurityHandler ([@VincentLanglet](https://github.com/VincentLanglet))block twig in order to override the button display by the admin in the base_edit_form ([@VincentLanglet](https://github.com/VincentLanglet))response_item_callback callback signature ([@VincentLanglet](https://github.com/VincentLanglet))title_mode. Use logo_content instead ([@VincentLanglet](https://github.com/VincentLanglet))admin in the request of search action ([@VincentLanglet](https://github.com/VincentLanglet))translation_domain ([@VincentLanglet](https://github.com/VincentLanglet))response_item_callback option of ModelAutocompleteFilter ([@VincentLanglet](https://github.com/VincentLanglet))ChainableFilterInterface ([@VincentLanglet](https://github.com/VincentLanglet))IconExtension twig extension. ([@VincentLanglet](https://github.com/VincentLanglet))parse_icon filter. ([@VincentLanglet](https://github.com/VincentLanglet))Symfony\Component\Form\FormRegistryInterface to AbstractFormContractor::__construct ([@dmaicher](https://github.com/dmaicher))global_search option to a filter which does not implements SearchableFilterInterface. ([@VincentLanglet](https://github.com/VincentLanglet))sonata_admin.global_search.case_sensitive configuration. ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::addParentAssociationMapping() method. ([@VincentLanglet](https://github.com/VincentLanglet))AdminInterface::setParent() without second argument. ([@VincentLanglet](https://github.com/VincentLanglet))AdminInterface::getParentAssociationMapping() for a non parent admin. ([@VincentLanglet](https://github.com/VincentLanglet))ListMapper::add. ([@VincentLanglet](https://github.com/VincentLanglet))ShowMapper::add. ([@VincentLanglet](https://github.com/VincentLanglet))DatagridMapper::add. ([@VincentLanglet](https://github.com/VincentLanglet))FormMapper::add. ([@VincentLanglet](https://github.com/VincentLanglet))FieldDescriptionInterface::mergeOptions(). ([@VincentLanglet](https://github.com/VincentLanglet))BaseFieldDescription::mergeOptions(). ([@VincentLanglet](https://github.com/VincentLanglet))icon option with the format fa-plus or plus, use the format fa fa-plus or pass directly the <i> html instead. ([@VincentLanglet](https://github.com/VincentLanglet))collection as argument 2 of FormMapper::add() method ([@franmomu](https://github.com/franmomu))FieldCollection::reorder() and Datagrid::reorderFilter() methods. ([@VincentLanglet](https://github.com/VincentLanglet))false as translation_domain for tab and action buttons. ([@VincentLanglet](https://github.com/VincentLanglet))Max_per_page drowpdown propagate correctly the sort_by filter value ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getDataSourceIterator() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::create() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::delete() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getFilterParameters() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getParentAssociationMapping() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getBaseRoutePattern() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getBaseRouteName() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getClass() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getSubClasses() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setSubClasses() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::hasSubClass() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::hasActiveSubClass() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getActiveSubClass() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getActiveSubclassCode() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getBatchActions() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getRoutes() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::hasRoute() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::isCurrentRoute() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::generateObjectUrl() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::generateUrl() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::generateMenuUrl() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getFormBuilder() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::defineFormBuilder() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::attachAdminClass() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getForm() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getList() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getDatagrid() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getSideMenu() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getRootCode() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getRoot() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setBaseControllerName() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getBaseControllerName() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getMaxPerPage() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setMaxPageLinks() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getMaxPageLinks() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getFormGroups() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setFormGroups() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::removeFieldFromFormGroup() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::reorderFormGroup() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getFormTabs() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setFormTabs() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getShowTabs() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setShowTabs() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getShowGroups() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setShowGroups() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::reorderShowGroup() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setParentFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getParentFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::hasParentFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setSubject() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getSubject() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::hasSubject() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getFormFieldDescriptions() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getFormFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::hasFormFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::addFormFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getShowFieldDescriptions() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getShowFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::hasShowFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::addShowFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::removeShowFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getListFieldDescriptions() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::hasListFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::addListFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::removeListFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getFilterFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::hasFilterFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::addFilterFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::removeFilterFieldDescription() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getFilterFieldDescriptions() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::addChild() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::hasChild() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getChildren() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getChild() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::isChild() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::hasChildren() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setUniqid() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getUniqid() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getClassnameLabel() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getPersistentParameter() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setCurrentChild() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::isCurrentChild() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getCurrentChildAdmin() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setTranslationDomain() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getTranslationDomain() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getTranslationLabel() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setRequest() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getRequest() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::hasRequest() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getCode() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getBaseCodeRoute() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::showIn() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::createObjectSecurity() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::isGranted() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getUrlSafeIdentifier() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getNormalizedIdentifier() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getShow() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setFormTheme() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getFormTheme() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setFilterTheme() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getFilterTheme() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::addExtension() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getExtensions() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::supportsPreviewMode() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::determinedPerPageValue() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::isAclEnabled() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::setListMode() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getListMode() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getAccessMapping() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::checkAccess() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::hasAccess() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractAdmin::getActionButtons() ([@VincentLanglet](https://github.com/VincentLanglet))renderWithExtraParams(), renderJson(), isXmlHttpRequest(), isPreviewRequested(), isPreviewApproved(), isInPreviewMode(), isPreviewDeclined(), validateCsrfToken(), escapeHtml(), getCsrfToken() methods in CRUDController ([@VincentLanglet](https://github.com/VincentLanglet))false ([@VincentLanglet](https://github.com/VincentLanglet))false ([@VincentLanglet](https://github.com/VincentLanglet))$ variable ([@phansys](https://github.com/phansys))strict param to CRUDController::assertObjectExists() in order to check for the existence of the id in the request ([@VincentLanglet](https://github.com/VincentLanglet))history_revision_timestamp.html.twig ([@VincentLanglet](https://github.com/VincentLanglet))FieldDescriptionInterface::getMappingType() return type ([@VincentLanglet](https://github.com/VincentLanglet))sortable option in FieldDescriptionOptions ([@franmomu](https://github.com/franmomu))edit_many_script.html.twig rendering ([@VincentLanglet](https://github.com/VincentLanglet))code value in the request of AppendFormFieldElementAction, GetShortObjectDescriptionAction, RetrieveAutocompleteItemsAction, RetrieveFormFieldElementAction and SetObjectFieldValueAction. Pass _sonata_admin instead. ([@VincentLanglet](https://github.com/VincentLanglet))Pool argument to the constructor of AppendFormFieldElementAction, GetShortObjectDescriptionAction, RetrieveAutocompleteItemsAction, RetrieveFormFieldElementAction and SetObjectFieldValueAction. Pass an AdminFetcher instead. ([@VincentLanglet](https://github.com/VincentLanglet))roles configuration field to configuration of menu item routes.trigger_error calls - E_USER_DEPRECATED was concatenated to the sentence, not passed as argumentbase_show_macro.html.twigAbstractAdmin class, replacing Admin oneBaseMapper::keys methodRouteCollection::clearExcept can now have a single string argumentBaseFieldDescription::camelizeAdminHelper::camelizeAdmin classAdminExtension classAdminHelper:getElementAccessPath methodsingle_text widget for date and timeRouteCollection:add methodhasRoute method to the AdminInterfacestandard_layout.html.twig is overriden. The KNPMenu is available in sonata_menu.html.twig template.getFieldOption, setFieldOption methods to the FilterInterfacegetFilterFieldDescription method to the AdminInterfacegetMaxPageLinks, setMaxPageLinks methods to the PagerInterfacesonata_wrapper block on standard_layout.html.twigsonata-autocomplete-dropdown-item is not automatically added to dropdown
autocomplete item in sonata_type_model_autocomplete, use option dropdown_item_css_class
to set the CSS class of dropdown item.Admin::toString method is escaped for html output before adding in flash message to prevent possible XSS vulnerability.btn-outline from doctrine-orm-admin form actions buttonsHow can I help you explore Laravel packages today?