Generování odkazů v modulu
- 2bfree
- Člen | 248
Zdravím, dá se nějakým způsobem generovat odkaz přímo uvnitř modulu?
Mám formulář ve FormPresenter
<?php
...
$form = new AppForm;
...
$form->onValidate[] = callback($this->getFormModel(),'validateRule');
...
?>
Obsah FormModel
<?php
...
public function validateRule(AppForm $form){
$values=$form->getValues();
if($this->isItOK($values['field1'],['field2'])){
return TRUE;
} else {
$form->addError("Something is wrong. May I repare it?");
return FALSE;
}
}
...
?>
Je to jen příklad, ale do té error zprávy bych chtěl dát odkaz na nějaký presenter s parametrem.
- 2bfree
- Člen | 248
Takže by to správně mělo být následovně?
FormPresenter
<?php
...
protected function createComponentForm(){
$form = new AppForm;
...
$form->onSubmit[] = callback($this,'processForm');
}
public function processForm(AppForm $form){
$values=$form->getValues();
if($this->isItOK($values['field1'],['field2'])){
...
} else {
$form->addError("Something is wrong. May I repare it?");
}
}
...
?>
- redhead
- Člen | 1313
No spíš jsem myslel něco takového (v presenteru by zas rozhodně neměli být modelové metody – isItOk)
protected function createComponentForm(){
$form = new AppForm;
...
$form->onSubmit[] = callback($this,'processForm');
}
public function processForm(AppForm $form){
$values = $form->getValues();
$model = new NejakyMujModelNaValidaci(); //proste nekde si vem ten svuj model
try {
$model->isItOK($values['field1'], $values['field2']);
...
} catch(Exception $e) {
$form->addError($e->getMessage());
//nebo
//$form->addError("Something is wrong. May I repare it?");
}
//nebo to tvoje, ale přijde mi to s tím booleanem prostě divné:
/*if($model->isItOK($values['field1'],['field2'])){
...
} else {
$form->addError("Something is wrong. May I repare it?");
}*/
}
- 2bfree
- Člen | 248
redhead napsal(a):
No spíš jsem myslel něco takového (v presenteru by zas rozhodně neměli být modelové metody – isItOk)
protected function createComponentForm(){ $form = new AppForm; ... $form->onSubmit[] = callback($this,'processForm'); } public function processForm(AppForm $form){ $values = $form->getValues(); $model = new NejakyMujModelNaValidaci(); //proste nekde si vem ten svuj model try { $model->isItOK($values['field1'], $values['field2']); ... } catch(Exception $e) { $form->addError($e->getMessage()); //nebo //$form->addError("Something is wrong. May I repare it?"); } //nebo to tvoje, ale přijde mi to s tím booleanem prostě divné: /*if($model->isItOK($values['field1'],['field2'])){ ... } else { $form->addError("Something is wrong. May I repare it?"); }*/ }
JJ, to jsem v tom jenom zapomněl upravit. ;) Teď se ještě zeptám, jak do Error zprávy dostat odkaz? Protože $this->link(); mi vrací jenom cestu a když to obalím o html v rámci té chybové zprávy, tak se to převede na text a nevykoná se. ;(
- bojovyletoun
- Člen | 667
máš kód uvnitř metody?
class ... {
function ...(...){
Html::el('a', 'Chybova hlaska')->href($this->...);
}
}
Editoval bojovyletoun (5. 12. 2010 15:27)
- Mikulas Dite
- Člen | 756
Spíš to voláš ve statické metodě.
Edit: quick&dirty fix
\Nette\Environment::getApplication()->presenter->link();
, ale
radši to udělej čistěji.
Editoval Mikulas Dite (5. 12. 2010 15:37)