Formular a parameter v url adrese

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

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

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

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

Aha.. no to uz je jasnejsie.

  1. vysledna url podla tvojej routy bude localhost/en/cms.
  2. 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');
?>