Životoní cyklus vlastní formulářové komponenty – best practice
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Ot@s
- Backer | 476
Poprosím vás o radu/y, jak hygienicky řešit následující. Mám vlastní formulářovou komponentu, viz její strukura:
class MujTyp extends \Nette\Object
{
public $a; // string
public $b; // string
public $c; // string
}
a definici samotné form. komponenty:
class MujInput extends \Nette\Forms\Controls\TextInput
{
public function __construct($label=NULL, $cols=NULL, $maxLength=NULL)
{
parent::__construct($label, $cols, $maxLength);
$this->value = new MujTyp();
}
// ... vlastni metody setValue, getControl, atd....
}
A ted ty otázky:
- obecně návrh definice objektu form.komponenty (dědit z
\Nette\Forms\Controls\TextInput
nebo z\Nette\Forms\Controls\BaseControl
) - jak řešít naplnění hodnot via
$form->setDefaults()
(tj. z BB dostanu pole, kde jsou součástí i ony $a, $b a $c zMujTyp
) - jak řešit ukládání do DB (resp. přednachystání do pole pro uložení)
Podotýkám, že výše uvedené mám „jaksi“ vyřešené, nicméně
z toho nemám vůbec dobrý pocit. :-(
Jde mi o ty best practices ideálně formou ukázky. Díky za jakékoli
nasměrování.
Editoval Ot@s (2. 8. 2011 9:08)
- Nox
- Člen | 378
- Pokud to má být v podstatě text input, tak asi z TextInput a jinak BaseControl
- Napsat pro MujTyp nějakou formu serializace, string reprezentace té skupiny hodnot – toto nemá řešit cizí prvek
- Jestli myslíš jeho výstup – asi bych dal return new MujTyp($serializovanaHodnota) a MujTyp by si to deserializoval (doufám že nemyslíš to že by to ten input sám ukládal do DB)
Inspirace třeba na http://www.doctrine-project.org/…mapping.html#…
Editoval Nox (2. 8. 2011 10:12)