contao/import — Issue #3017: Widget interfaces
Author: aschempp
Created: 2011-11-29 20:42:50+00:00
State: open
Labels: Feature, framework, Pending

Hatte eben eine neue Idee wie die Code-Redundanz in Contao verbessert werden könnte.

Problem: Jedes Widget muss selbständig handhaben, ob gewisse HTML-Attribute erlaubt sind. So gibt es in der TextField Klasse folgendes:

```
case 'mandatory':
$this->arrConfiguration['mandatory'] = $varValue ? true : false;
break;

case 'readonly':
$this->arrAttributes['readonly'] = 'readonly';
$this->blnSubmitInput = false;
break;
```

Jedes Widget muss diese neu implementieren.

Das Problem liesse sich (z.B.) über interfaces lösen.
`system/interfaces.php`

```
interface widget_readonly {}
interface widget_mandatory {}
```

`system/libraries/Widget.php`

```
case 'mandatory':
if ($this instanceof widget_readonly)
{
$this->arrConfiguration['mandatory'] = $varValue ? true : false;
}
break;

case 'readonly':
if ($this instanceof widget_readonly)
{
$this->arrAttributes['readonly'] = 'readonly';
$this->blnSubmitInput = false;
}
break;
```

`system/modules/backend/TextField.php`

```
class TextField extends Widget implements widget_readonly, widget_mandatory
```

--- _Originally created on April 19th, 2011, at 02:25pm (ID 3017)_