Validacni pravidla v databazi

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
libik
Člen | 100
+
0
-

V databazi mam tabulku s parametry, u kazdeho pole validation_rule, validation_hint a validation_pattern.

Takze chci policko ve formulari validovat podle konkretniho pravidla, definovaneho v db.
Takze treba validation_rule = „INTEGER“, valdation_hint = „Zadejte cele cislo“.

Cela metoda:

<?php
    public function actionEdit($attribute) {
	$this->propertiesRecord = $this->webProperties->findByAttribute($attribute);
	if (!$this->propertiesRecord) {
	    $this->flashMessage("Takový parametr neexistuje! [$attribute]", 'error');
	    $this->redirect('default');
	}
	$this["propertiesForm"]->setDefaults($this->propertiesRecord);
        $this["propertiesForm"]['value']->addRule(Form::$this->propertiesRecord->validation_rule, $this->propertiesRecord->validation_hint);
    }
?>

A to nejde, jde to tedy dynamicky jinak?

Formular definovan takto:

<?php
$form->addText('value', 'Hodnota:');
?>

Editoval libik (18. 9. 2013 18:11)

David Matějka
Moderator | 6445
+
0
-

zkus:

constant('Nette\Forms\Form::' . $this->propertiesRecord->validation_rule);
libik
Člen | 100
+
0
-

Funguje, diky!

Jeste resim jak pri rucnim vykreslovani formulare zobrazit hint.

<?php
$this["propertiesForm"]['value']->setOption('description', 'hinta');
?>

{control propertiesForm} ji zobrazi, ale rucne nevim, kde ji najit.

David Matějka
Moderator | 6445
+
0
-

budes muset:

{form propertiesForm}
...
	{label value/}
	{input value}
	{$form['value']->getOption('description')}
...
{/form}
libik
Člen | 100
+
0
-

Jede to, diky!