Settery FormContainerů pro nastavení všech potomků
- Mikulas Dite
- Člen | 756
V poslední době hodně pracuji s formuláři a docela mi chybí tahle featurka: FormContainer by mohl umět setovací metody, které mají všechny controly společné (např. disabled, class, style atp.) a nastavil by všem svým potomkům setovaný atribut. Implementace by měla být triviální, asi by postačila iterace přes všechny getControls().
- Mikulas Dite
- Člen | 756
Tak jasně že to jde, ale to by potom celý Nette framework mohl být metoda Object. ; )
- Mikulas Dite
- Člen | 756
Mohlo by se prosím do Nette dostat něco na tenhle způsob?
class FormContainer
/**
* Disables or enables all child controls.
* @param bool
* @return FormContainer provides a fluent interface
*/
public function setDisabled($value = TRUE)
{
foreach ($this->getControls() as $control) {
$control->disabled = (bool) $value;
}
return $this;
}
/**
* Sets attribute to all child controls.
* @param string attribute name
* @param string|NULL content to set, clear attribute if omitted or NULL
* @return FormContainer provides a fluent interface
*/
public function setAttribute($attribute, $value = NULL)
{
foreach ($this->getControls() as $control) {
if ($value !== NULL) {
$control->getControlPrototype()->$attribute = $value;
} else {
unset($control->getControlPrototype()->$attribute);
}
}
return $this;
}
- Mikulas Dite
- Člen | 756
A jo, na to sem nemyslel – ale popravdě, byla by to asi stejně hloupá chyba jako třeba volání funkce po return. Tak dalo by se to i využít (no nedalo, protože by to bylo až moc WTF). Dobře, asi se z toho stane už asi desátá věc, kterou si do Nette budu doplňovat ručně…