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');
?>