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
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
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… :-(
- hurvajs
- Člen | 86
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… :'(