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
+
0
-

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)

David Matějka
Moderator | 6445
+
+1
-

Vykreslujes pak v sablone errory toho formulare?


btw, muzes pouzit generovany tovarnicky

simPod
Člen | 383
+
0
-

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!