Skip to content

Commit 4601578

Browse files
committed
Add the new handling of parameters, as in some cases it can lead to parameters being lost
1 parent efb33b8 commit 4601578

2 files changed

Lines changed: 76 additions & 1 deletion

File tree

Classes/Controller/AbstractController.php

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,11 +235,83 @@ protected function getLanguageService(): LanguageService
235235
*
236236
* @return null|string|array
237237
*/
238-
protected function getParametersSafely(string $parameterName)
238+
protected function getParametersSafely(string $parameterName, array $pluginNames = [])
239239
{
240240
if ($this->request->hasArgument($parameterName)) {
241241
return $this->request->getArgument($parameterName);
242242
}
243+
244+
if (!empty($pluginNames)) {
245+
$pluginParameter = $this->getPluginParameterFromArgument($parameterName, $pluginNames);
246+
if ($pluginParameter !== null) {
247+
return $pluginParameter;
248+
}
249+
}
250+
251+
$parsedBody = $this->request->getParsedBody();
252+
if ($parsedBody) {
253+
$bodyParameter = $this->getParameterFromRequestData($parameterName, $parsedBody, $pluginNames);
254+
if ($bodyParameter !== null) {
255+
return $bodyParameter;
256+
}
257+
}
258+
259+
$queryParams = $this->request->getQueryParams();
260+
if ($queryParams) {
261+
$queryParameter = $this->getParameterFromRequestData($parameterName, $queryParams, $pluginNames);
262+
if ($queryParameter !== null) {
263+
return $queryParameter;
264+
}
265+
}
266+
267+
return null;
268+
}
269+
270+
271+
/**
272+
* Safely gets parameters from request if they exist
273+
*
274+
* @param string $parameterName
275+
* @param array $pluginNames
276+
*
277+
* @return null|string|array
278+
*/
279+
private function getParameterFromRequestData(string $parameterName, array $requestData, array $pluginNames)
280+
{
281+
if (array_key_exists($parameterName, $requestData)) {
282+
return $requestData[$parameterName];
283+
}
284+
285+
foreach ($pluginNames as $pluginName) {
286+
if (array_key_exists($pluginName, $requestData)) {
287+
$pluginRequest = $requestData[$pluginName];
288+
if (array_key_exists($parameterName, $pluginRequest)) {
289+
return $pluginRequest[$parameterName];
290+
}
291+
}
292+
}
293+
294+
return null;
295+
}
296+
297+
/**
298+
* Safely gets plugin parameters from argument if they exist
299+
*
300+
* @param string $parameterName
301+
* @param array $pluginNames
302+
*
303+
* @return null|string|array
304+
*/
305+
private function getPluginParameterFromArgument(string $parameterName, array $pluginNames)
306+
{
307+
foreach ($pluginNames as $pluginName) {
308+
if ($this->request->hasArgument($pluginName)) {
309+
$pluginRequest = $this->request->getArgument($pluginName);
310+
if (array_key_exists($parameterName, $pluginRequest)) {
311+
return $pluginRequest[$parameterName];
312+
}
313+
}
314+
}
243315
return null;
244316
}
245317

Classes/Controller/ListViewController.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ public function injectMetadataRepository(MetadataRepository $metadataRepository)
7878
public function mainAction(): void
7979
{
8080
$this->searchParams = $this->getParametersSafely('searchParameter');
81+
if (!$this->searchParams) {
82+
$this->searchParams = $this->getParametersSafely('searchParameter', ['tx_dlf_search']);
83+
}
8184

8285
// extract collection(s) from collection parameter
8386
$collections = [];

0 commit comments

Comments
 (0)