Dva jazyky a nefunkcni form action

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

Ahoj, moc nechapu proc mi nefunguje generovani AppForm a jeho action. V podstate nefunguji jen formulare. Ostatni stranky jdou.

Nevidite ji nekdo?

<?php
    $router[] = new Route('/<lang>/kontakt/', array(
        'module'    => 'Frontend',
        'presenter' => 'Contact',
        'action'    => 'show'
    ));
    $router[] = new Route('/<lang>/contact/', array(
        'module'    => 'Frontend',
        'presenter' => 'Contact',
        'action'    => 'show'
    ));
?>

Formular:

<?php
final class Frontend_ContactForm extends BaseForm
{
    public function __construct($name, $parent = null)
    {
        parent::__construct($parent, $name);

        ...
    }
}
?>

V HTML mi to vygeneruje:

<form action="error: No route for Frontend:Contact:show(do=form-submit)" method="post" onsubmit="return validateForm(this)">
hurvajs
Člen | 86
+
0
-

Zajimave na tom je to, ze kdyz udelam router takto:

<?php
    $router[] = new Route('/cs/kontakt/', array(
        'module'    => 'Frontend',
        'presenter' => 'Contact',
        'action'    => 'show'
    ));
    $router[] = new Route('/en/contact/', array(
        'module'    => 'Frontend',
        'presenter' => 'Contact',
        'action'    => 'show'
    ));
?>

tak to funguje… Tomu opravdu nerozumim… :-(

Ondřej Mirtes
Člen | 1536
+
0
-

Zkus odstranit ty začáteční lomítka.

hurvajs
Člen | 86
+
0
-

Odstraneni nepomohlo.

hurvajs
Člen | 86
+
0
-

Konecne jsem nasel chybu. V definici routeru mi schazelo lang. Takto to funguje:

<?php
    $router[] = new Route('cs/kontakt', array(
        'lang'      => 'cs',
        'module'    => 'Frontend',
        'presenter' => 'Contact',
        'action'    => 'show'
    ));
    $router[] = new Route('en/contact', array(
        'lang'      => 'en',
        'module'    => 'Frontend',
        'presenter' => 'Contact',
        'action'    => 'show'
    ));
?>

ale bohuzel nastal jiny problem a to, ze spatne generuje form action pro odeslani formulare. Pri anglicke verzi webu se vygeneruje action jako pro ceskou, tj.

<form action="/cs/kontakt?do=form-submit" method="post" onsubmit="return validateForm(this)">

Uz se mi opravdu zda, ze ten router snad ani nikdy nefungoval. Podle me si dela co chce… :'(

Ondřej Mirtes
Člen | 1536
+
+1
-

A máš ten lang jako persistentní parametr BasePresenteru?

hurvajs
Člen | 86
+
0
-

No, prave ze mam.

<?php
abstract class Frontend_BasePresenter extends BasePresenter
{
    public $oldLayoutMode = FALSE;

    /** @persitent */
    public $lang;

    ....

    protected function startup()
    {
    	parent::startup();

        $this->lang = $this->getParam('lang');
    }
?>
norbe
Backer | 405
+
0
-

Ale v tom @persi**s**tent Ti chybí S :-)

Editoval norbe (10. 11. 2009 11:52)

hurvajs
Člen | 86
+
0
-

norbe napsal(a):

Ale v tom @persi**s**tent Ti chybí S :-)

No jo… To jsem ale idiot. Celou dobu jsem to prehlizel. Ke vsemu jsem si rikal, ze musim kouknout, jestli mam dobre to persistent. Takova prihloupla chyba :-(

Diky moc