116 lines
3.3 KiB
ReStructuredText
116 lines
3.3 KiB
ReStructuredText
.. include:: /Includes.rst.txt
|
|
|
|
.. _deprecation-104108-1718354448:
|
|
|
|
================================================================
|
|
Deprecation: #104108 - Table dependant definition of columnsOnly
|
|
================================================================
|
|
|
|
See :issue:`104108`
|
|
|
|
Description
|
|
===========
|
|
|
|
When linking to the edit form it's possible to instruct the
|
|
:php:`EditDocumentController` to only render a subset of available
|
|
fields for relevant records using the `columnsOnly` functionality,
|
|
by adding the fields to be rendered as a comma-separated list.
|
|
|
|
However, the edit form can render records from many tables, and not just
|
|
a single table, in the same request.
|
|
|
|
Therefore, the limit fields functionality has been extended to allow
|
|
setting the fields to be rendered on a per-table basis. This means that
|
|
passing a comma-separated list of fields as a value for `columnsOnly`
|
|
has been deprecated.
|
|
|
|
Impact
|
|
======
|
|
|
|
Passing a comma-separated list of fields as value for `columnsOnly` will
|
|
trigger a PHP deprecation warning. A compatibility layer will automatically
|
|
set the field list for the required tables.
|
|
|
|
|
|
Affected installations
|
|
======================
|
|
|
|
All installations passing a comma-separated list of fields as a value for
|
|
`columnsOnly`.
|
|
|
|
|
|
Migration
|
|
=========
|
|
|
|
The fields to be rendered have to be passed as an :php:`array` under the
|
|
corresponding table name.
|
|
|
|
An example, building such link using the `UriBuilder`:
|
|
|
|
.. code-block:: php
|
|
|
|
$urlParameters = [
|
|
'edit' => [
|
|
'pages' => [
|
|
1 => 'edit',
|
|
],
|
|
],
|
|
'columnsOnly' => 'title,slug'
|
|
'returnUrl' => $request->getAttribute('normalizedParams')->getRequestUri(),
|
|
];
|
|
|
|
GeneralUtility::makeInstance(UriBuilder::class)->buildUriFromRoute('record_edit', $urlParameters);
|
|
|
|
Above example has to be migrated to:
|
|
|
|
.. code-block:: php
|
|
|
|
$urlParameters = [
|
|
'edit' => [
|
|
'pages' => [
|
|
1 => 'edit',
|
|
],
|
|
],
|
|
'columnsOnly' => [
|
|
'pages' => [
|
|
'title',
|
|
'slug'
|
|
]
|
|
],
|
|
'returnUrl' => $request->getAttribute('normalizedParams')->getRequestUri(),
|
|
];
|
|
|
|
GeneralUtility::makeInstance(UriBuilder::class)->buildUriFromRoute('record_edit', $urlParameters);
|
|
|
|
Additionally, when rendering records from many tables, a configuration
|
|
could look like the following:
|
|
|
|
.. code-block:: php
|
|
|
|
$urlParameters = [
|
|
'edit' => [
|
|
'pages' => [
|
|
1 => 'edit',
|
|
],
|
|
'tt_content' => [
|
|
2 => 'edit',
|
|
],
|
|
],
|
|
'columnsOnly' => [
|
|
'pages' => [
|
|
'title',
|
|
'slug'
|
|
],
|
|
'tt_content' => [
|
|
'header',
|
|
'subheader'
|
|
]
|
|
],
|
|
'returnUrl' => $request->getAttribute('normalizedParams')->getRequestUri(),
|
|
];
|
|
|
|
// https:://example.com/typo3/record/edit?edit[pages][1]=edit&edit[tt_content][2]=edit&columnsOnly[pages][0]=title&columnsOnly[pages][1]=slug&columnsOnly[tt_content][0]=header&columnsOnly[tt_content][1]=subheader
|
|
$link = GeneralUtility::makeInstance(UriBuilder::class)->buildUriFromRoute('record_edit', $urlParameters);
|
|
|
|
.. index:: Backend, NotScanned, ext:backend
|