myValidator
- Ondřej Brejla
- Člen | 746
Je nějak možné, aby se mi do myValidator()
u předávala
pouze hodnota daného FormControlu, místo celého? Abych pak nemusel volat
$item->getValue()
. Jasně, můžu to obejít, jde mi o to,
jestli se to třeba nedá někde rovnou nastavit.
- Ondřej Brejla
- Člen | 746
Protože celý FormControl
nepotřebuju. A pokud bych tu fci
používal i k jiné kontrole (ne jen na prvku formu, ale v jiném kontextu),
tak jí předávám rovnou třeba string
. Nemusím pak kontrolovat,
jestli jsem FormControl
nebo ne a případně si sahat pro value.
Není problém to pořešit tak jak to je, jen mě zajímá, jestli to
třeba nejde…
Edit: Jestli se třeba getValue()
nevolá při přetypování na
string
? Hledal jsem a nenašel.
Editoval Warden (15. 7. 2009 16:10)
- Jod
- Člen | 701
No, ale vezmi si že napríklad danú hodnotu potrebuješ použiť aj s inou
z formulára.
Potom sa také $input->form->values[‚xxx‘]; určite zíde.
Mne napríklad určite, lebo to používam :))) A na model si napríklad robím
wrapprovaciu metódu. Niečo takéto:
<?php
function formValidateUsername($input)
{
$this->model->validate('username', $input->value, $this->getParam('id'));
}
?>
Či ti to dá vela námahy písať ? :D
- Ondřej Brejla
- Člen | 746
Honza M. napsal(a):
Nejde. Při přetypování na string se getValue nevolá.
To sem si myslel…:) Škoda je to ;)
Jod napsal(a):
…
Já právě zas v podstatě pořád používám jen tu jednu hodnotu, takže pořád píšu $blabla->getValue() a to mi neba, líbilo by se mi nějaké přepínátko kdesi…:) A nebo volání getValue() při string přetypování :) To by bylo taky krásné :)
Editoval Warden (15. 7. 2009 16:57)
- Jod
- Člen | 701
Aha, no to hej. Tak si môžeš v BaseModeli spraviť metódu typu:
<?php
function formatValue($value)
{
if($value instanceOf IFormControl) {
return $value->value;
}
elseif(is_object($value) || is_array($value)) {
throw new InvalidArgumentException();
}
else return $value;
}
?>
a potom to v modeli volat na jednom riadku.
Inak ma asi nenapadá.
Môžeš dať feature request na Davida :)
- Ondřej Brejla
- Člen | 746
Takhle to teď v podstatě řeším, ale nelíbí se mi to :) Zbytečně komplikované…a je tam ten řádek navíc ;) Asi by to chtělo Feature requestík mno :)
- David Grudl
- Nette Core | 8227
Takhle věc se stejně musí nějak systémově vyřešit, protože na ní visí validace na straně modelu.
- Jod
- Člen | 701
Čo tak ako prvé poslať hodnotu a druhý parameter by bol IFormControl?
Aj keď pri udalostiach by mal byť prvý parameter sender.
Alebo dať do addRule ešte volitelný parameter, či sa má posielať čistá
hodnota prvku a nie prvok samotný, to by to asi vyriešilo.
Editoval Jod (15. 7. 2009 19:16)