contao/test — Issue #1342: Verbesserung der Funktion getPost() in Widget.php
Author: aschempp
Created: 2011-11-29 07:45:46+00:00
State: open
Labels: Feature, framework

In einem aktuellen Fall möchte ich einen Widget als Namen ein Array übergeben, z.B. payment[9][cc_num]. Das funktioniert ja in HTML problemlos, gepostet wird dann das Array "payment" welches alle entsprechenden Felder enthält. Aktuell funktioniert aber die Validierung der Daten noch nicht, weil das Modul nach einem Post-Parameter mit dem ganzen als String sucht. Ich habe die getPost() Routine verbessert um Arrays zu behandeln:

```
protected function getPost($strKey)
{
$strMethod = $this->allowHtml ? 'postHtml' : 'post';

if ($this->preserveTags)
{
$strMethod = 'postRaw';
}

$arrParts = explode('[', str_replace(']', '', $strKey));
if (count($arrParts) > 1)
{
$varValue = $this->Input->$strMethod(array_shift($arrParts), $this->decodeEntities);
foreach( $arrParts as $part )
{
if (!is_array($varValue))
break;

$varValue = $varValue[$part];
}

return $varValue;
}

return $this->Input->$strMethod($strKey, $this->decodeEntities);
}
```

In meinen Tests hat alles wie gewünscht funktioniert. Vielleicht könnte man das explode() auch durch ein Regex ersetzen, ist aber vermutlich nicht schneller und ein normaler Name sollte nie [ und ] enthalten.

--- _Originally created on December 31st, 2009, at 02:31pm (ID 1342)_