diff --git a/src/FieldDescription/BaseFieldDescription.php b/src/FieldDescription/BaseFieldDescription.php index b486063f79..026e51a40f 100644 --- a/src/FieldDescription/BaseFieldDescription.php +++ b/src/FieldDescription/BaseFieldDescription.php @@ -32,33 +32,29 @@ * Some options are global across the different contexts, other are * context specifics. * - * Global options : + * Global options: * - type (m): define the field type (use to tweak the form or the list) - * - template (o) : the template used to render the field - * - name (o) : the name used (label in the form, title in the list) - * - link_parameters (o) : add link parameter to the related Admin class when + * - template (o): the template used to render the field + * - label (o): the name used (label in the form, title in the list) + * - accessor (o): the method or the property path to retrieve the related value + * - associated_property (o): the method or the property path to retrieve the "string" + * representation of the collection element. + * - link_parameters (o): add link parameter to the related Admin class when * the Admin.generateUrl is called - * - accessor : the method or the property path to retrieve the related value - * - associated_tostring : (deprecated, use associated_property option) - * the method to retrieve the "string" representation - * of the collection element. - * - associated_property : property path to retrieve the "string" representation - * of the collection element. * - * Form Field options : + * Form Field options: * - field_type (o): the widget class to use to render the field * - field_options (o): the options to give to the widget - * - edit (o) : list|inline|standard (only used for associated admin) - * - list : open a popup where the user can search, filter and click on one field + * - edit (o): list|inline|standard (only used for associated admin) + * - list: open a popup where the user can search, filter and click on one field * to select one item - * - inline : the associated form admin is embedded into the current form - * - standard : the associated admin is created through a popup + * - inline: the associated form admin is embedded into the current form + * - standard: the associated admin is created through a popup * - * List Field options : + * List Field options: * - identifier (o): if set to true a link appear on to edit the element * - * Filter Field options : - * - options (o): options given to the Filter object + * Filter Field options: * - field_type (o): the widget class to use to render the field * - field_options (o): the options to give to the widget * @@ -269,11 +265,12 @@ public function setOptions(array $options) unset($options['help']); } - // set default placeholder + // NEXT_MAJOR: Remove this. if (!isset($options['placeholder'])) { $options['placeholder'] = 'short_object_description_placeholder'; } + // NEXT_MAJOR: Remove this. if (!isset($options['link_parameters'])) { $options['link_parameters'] = []; } diff --git a/src/FieldDescription/FieldDescriptionInterface.php b/src/FieldDescription/FieldDescriptionInterface.php index d0575ba3cd..b5ea55c7e6 100644 --- a/src/FieldDescription/FieldDescriptionInterface.php +++ b/src/FieldDescription/FieldDescriptionInterface.php @@ -15,45 +15,38 @@ use Sonata\AdminBundle\Admin\AdminInterface; use Sonata\AdminBundle\Exception\NoValueException; -use Symfony\Component\Form\DataTransformerInterface; -use Symfony\Component\PropertyAccess\PropertyPathInterface; /** * @author Thomas Rabaix * * @phpstan-type FieldDescriptionOptions = array{ - * accessor?: string|callable|PropertyPathInterface, - * actions?: array, - * admin_code?: string, - * associated_property?: string, - * block_name?: string, - * catalogue?: string, - * data_transformer?: DataTransformerInterface, - * edit?: string, - * editable?: bool, - * field_name?: string, - * field_options?: array, - * field_type?: string, - * header_class?: string, - * identifier?: bool, - * inline?: string, - * label?: bool|string|null, - * link_parameters?: array, - * multiple?: bool, - * placeholder?: string, - * required?: bool, + * accessor?: string|callable|\Symfony\Component\PropertyAccess\PropertyPathInterface, + * associated_property?: string|callable|\Symfony\Component\PropertyAccess\PropertyPathInterface, + * label?: string|false|null, + * link_parameters?: array, * role?: string|string[], - * route?: array, - * safe?: bool, - * sort_field_mapping?: array, - * sort_parent_association_mappings?: array, + * sort_field_mapping?: array, + * sort_parent_association_mappings?: array>, * sortable?: bool, * template?: string, - * timezone?: string|\DateTimeZone, * translation_domain?: string, * type?: string, * virtual_field?: bool - * } + * }&array + * @psalm-type FieldDescriptionOptions = (array{ + * accessor?: string|callable|\Symfony\Component\PropertyAccess\PropertyPathInterface, + * associated_property?: string|callable|\Symfony\Component\PropertyAccess\PropertyPathInterface, + * label?: string|false|null, + * link_parameters?: array, + * role?: string|string[], + * sort_field_mapping?: array, + * sort_parent_association_mappings?: array>, + * sortable?: bool, + * template?: string, + * translation_domain?: string, + * type?: string, + * virtual_field?: bool + * }&array)|array * * @method string|null getTargetModel() * @method bool hasAdmin() diff --git a/src/Resources/views/CRUD/Association/edit_many_script.html.twig b/src/Resources/views/CRUD/Association/edit_many_script.html.twig index c03a9f5689..51523318a8 100644 --- a/src/Resources/views/CRUD/Association/edit_many_script.html.twig +++ b/src/Resources/views/CRUD/Association/edit_many_script.html.twig @@ -524,7 +524,7 @@ This code manages the many-to-[one|many] association field popup 'objectId': 'OBJECT_ID', 'uniqid': associationadmin.uniqid, 'code': associationadmin.code, - 'linkParameters': sonata_admin.field_description.option('link_parameters') + 'linkParameters': sonata_admin.field_description.option('link_parameters', {}) })}}'.replace('OBJECT_ID', objectId), dataType: 'html', success: function(html) { diff --git a/src/Resources/views/CRUD/Association/edit_many_to_one.html.twig b/src/Resources/views/CRUD/Association/edit_many_to_one.html.twig index 1d8aa890ea..19c3fe14d4 100644 --- a/src/Resources/views/CRUD/Association/edit_many_to_one.html.twig +++ b/src/Resources/views/CRUD/Association/edit_many_to_one.html.twig @@ -24,11 +24,11 @@ file that was distributed with this source code. 'code': sonata_admin.field_description.associationadmin.code, 'objectId': sonata_admin.field_description.associationadmin.id(sonata_admin.value), 'uniqid': sonata_admin.field_description.associationadmin.uniqid, - 'linkParameters': sonata_admin.field_description.option('link_parameters') + 'linkParameters': sonata_admin.field_description.option('link_parameters', {}) })) }} - {% elseif sonata_admin.field_description.option('placeholder') %} + {% elseif sonata_admin.field_description.option('placeholder', 'short_object_description_placeholder') %} - {{ sonata_admin.field_description.option('placeholder')|trans({}, 'SonataAdminBundle') }} + {{ sonata_admin.field_description.option('placeholder', 'short_object_description_placeholder')|trans({}, 'SonataAdminBundle') }} {% endif %} diff --git a/src/Resources/views/CRUD/Association/edit_one_to_one.html.twig b/src/Resources/views/CRUD/Association/edit_one_to_one.html.twig index a84954ab98..cc7ad75ec3 100644 --- a/src/Resources/views/CRUD/Association/edit_one_to_one.html.twig +++ b/src/Resources/views/CRUD/Association/edit_one_to_one.html.twig @@ -24,11 +24,11 @@ file that was distributed with this source code. 'code': sonata_admin.field_description.associationadmin.code, 'objectId': sonata_admin.field_description.associationadmin.urlSafeIdentifier(sonata_admin.value), 'uniqid': sonata_admin.field_description.associationadmin.uniqid, - 'linkParameters': sonata_admin.field_description.option('link_parameters') + 'linkParameters': sonata_admin.field_description.option('link_parameters', {})) })) }} - {% elseif sonata_admin.field_description.option('placeholder') %} + {% elseif sonata_admin.field_description.option('placeholder', 'short_object_description_placeholder') %} - {{ sonata_admin.field_description.option('placeholder')|trans({}, 'SonataAdminBundle') }} + {{ sonata_admin.field_description.option('placeholder', 'short_object_description_placeholder')|trans({}, 'SonataAdminBundle') }} {% endif %} diff --git a/src/Resources/views/Form/form_admin_fields.html.twig b/src/Resources/views/Form/form_admin_fields.html.twig index cd7d04eece..0d441dee26 100644 --- a/src/Resources/views/Form/form_admin_fields.html.twig +++ b/src/Resources/views/Form/form_admin_fields.html.twig @@ -600,11 +600,11 @@ file that was distributed with this source code. 'code': sonata_admin.field_description.associationadmin.code, 'objectId': sonata_admin.field_description.associationadmin.urlSafeIdentifier(sonata_admin.value), 'uniqid': sonata_admin.field_description.associationadmin.uniqid, - 'linkParameters': sonata_admin.field_description.option('link_parameters') + 'linkParameters': sonata_admin.field_description.option('link_parameters', {}) })) }} - {% elseif sonata_admin.field_description.option('placeholder') %} + {% elseif sonata_admin.field_description.option('placeholder', 'short_object_description_placeholder') %} - {{ sonata_admin.field_description.option('placeholder')|trans({}, 'SonataAdminBundle') }} + {{ sonata_admin.field_description.option('placeholder', 'short_object_description_placeholder')|trans({}, 'SonataAdminBundle') }} {% endif %}