Vlastní validator v komponentě
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- simPod
- Člen | 383
Používám vlastní validator takhle:
->addRule('MyNS\Validators::dtValidator', 'Datum a čas musí být v povoleném rozsahu.', array('dtFrom' => date("d.m.Y", strtotime("+1 day")), 'timeFrom' => "8:00", 'timeTo' => "18:00"))
V presenteru funguje v pohodě. Když to samé udělám v komponentě (zjednodušeně volám takto:
protected function createComponentMyForm() {
$control = $this->myFormFactory->create();
return $control;
}
a pak
class MyFormFactory {
function create() {
$obj = new QuickOrderForm();
$obj->injectServices($this->orderModel);
return $obj;
}
}
class QuickOrderForm extends UI\Control {
protected function createComponentForm() {
...
->addRule('MyNS\Validators::dtValidator', 'Datum a čas musí být v povoleném rozsahu.', array('dtFrom' => date("d.m.Y", strtotime("+1 day")), 'timeFrom' => "8:00", 'timeTo' => "18:00"));
$form->onSuccess[] = $this->processForm;
return $form;
}
}
public function render() {
$template = $this->template;
//v sablone se vola {control form}
$template->setFile(__DIR__ . '/default.latte');
$template->render();
}
Nevyhodí to žádnou chybu, ale formulář se nesubmittne,
processForm()
se vůbec nezavolá. A jak říkám, v presenteru
mi ten validator funguje (?) Proč ne v komponentě? Díky
Editoval simPod (3. 2. 2015 0:50)
- simPod
- Člen | 383
aha nevykresluju, ted uz to chapu :) já měl za to, že mi to vyhodí Live validace https://github.com/…m-validation a ono ne
diky za tip, jak tam u ty generovany tovarnicky dostanu services? ted to
delam pres $obj->injectServices($this->orderModel);
viz kod
nahore. Kdyz mi nette vygeneruje tu create();
metodu, tak to musim
udelat jinak. Nejaky best practice? Diky!