Formular a parameter v url adrese
- tomdawayhet
- Člen | 20
Riesim blbost alebo fakt sa nenajde nikto kto by mi vysvetlil kde je problem ?
pri odosielani formulara tvoreneho cez tovarnicku mi este pred odoslanim nastavi v url adrese defaultny parameter z routy aj ked v url je nieco uplne ine. konkretne:
$router[] = new NRoute(‚<lang
[a-z]{2}>/<presenter>/<action>‘, array(
‚lang‘ ⇒ ‚sk‘,
‚presenter‘ ⇒ ‚Default‘,
‚action‘ ⇒ ‚default‘,
‚id‘ ⇒ NULL
));
skusal som menit aj redirect a setAction no sprava sa to divne, nepresmeruje sa a nezobrazi flash messages :(
prosim pomozte mi niekto riesim to druhy den :(
Editoval tomdawayhet (10. 12. 2010 11:49)
- tomolas
- Člen | 66
Asi si to tu dost dobre nevysvetlil. Skus popisat z akej url na aku „zlu“ url sa dostanes.. proste lepsie popis problem.
Ja som to z tvojho vysvetlenia pochopil tak, ze ti vadi, ze sa ti nastavi
v url defaultny parameter ked odosles formular..
Defaultne parametre presne na to su, aby sa „defaultne“ nastavovali, takze
v tom to asi nebude.
Ak „sa“ nepresmeruje, tak skus presmerovat „ty“ :) Robi sa to v obycajne niekde tu
<?php
public function searchFormSubmitted(AppForm $form)
{
$v = $form->getValues();
// do something
$this->flashMessage('Vyslo/nevyslo');
$this->redirect('Search:results', array(parametre)); // tu presmerujes
}
?>
- tomdawayhet
- Člen | 20
ide o to ze ako defaultny mam jazyk „sk“ ktory v url nieje cize adresa
vyzera: localhost/cms/
ak mam vybrany v url jazyk „en“(localhost/cms/en) pri odosielani formularov
ma stale smeruje na „sk“ cize
localhost/cms/?_fid=eb49
nemozem najst sposob ako do presmerovania zahrnut aj parameter jazyka:
takto presmeruvavam a potrebujem aby tam bola aj skratka jazyka
$this->redirect(‚Default:default‘);
vdaka za pomoc
- tomolas
- Člen | 66
Aha.. no to uz je jasnejsie.
- vysledna url podla tvojej routy bude localhost/en/cms.
- asi musis $lang nastavit ako persistentny parameter, aby sa vzdy prenasal v url
napr. v BasePresenter takto
<?php
abstract class BasePresenter extends Presenter
{
/** @persistent */
public $lang;
...
}
?>
3. presmerujes aj so zmenou jazyka v sablone takto:
<a href="{link this 'lang'=>'en'">...</a>
v presenteri takto:
<?php
$this->redirect('Default:default', $lang=>'en');
?>