Formulář generuje chybné Action
- jetpack
- Člen | 71
Zdravím,
používám nejnovější nette 2.0.7 (Ale chyba je i v Nette 2.0.6).
Generuji formulář jako komponentu „createComponentSearchForm“ a problém je v tom, že ve výsledném HTML je u Action: <form ..... action=„http://do?=searchForm-submit“ … ></form>
jedná se o Nette\Application\UI\Form;
<?php
public function createComponentSearchForm()
{
$form = new Form
$form->addText('bla');
......
$form->onSuccess[] = callback($this, 'makeSearch');
return $form;
}
?>
V šablone jej vykresluji ručně.
Což je jasně špatně, ale připadá mi, že se to týká celé aplikace kde se vygeneruje u ostatních formů action jen „http://“.
Píšu tady jelikož mám obrovskou aplikaci a hledat problém mi trvá už
pár hodin.
Chci se zeptat jestli se s tím už někdo nesetkal.
- Šaman
- Člen | 2666
a dědíš formulář od Nette\Application\UI\Form
(dříve
AppForm
)? Nebo dědíš od Nette\Forms\Form
, což jsou
základní formuláře nenavázané na Nette presenter?
//edit: Aha, sorry, píšeš, že se jedná o
Nette\Application\UI\Form
. Jsi si jistý, že nedošlo někde
k dědění od prostého formu? Jiný problém mě nenapadá, u mě to funguje
(vývojová verze).
Editoval Šaman (18. 12. 2012 23:01)
- Filip Procházka
- Moderator | 4668
Továrničky na komponenty jsou vždy protected
! Ukaž jak to
renderuješ a ukaž víc toho presenteru. Mám podezření, že voláš
$presenter->createComponent...;
místo aby jsi komponentu nechal
řádně připojit.
- jetpack
- Člen | 71
Jo já zapoměl na protected. To jsem opravil.
Renderuju to tak, že v šabloně mám:
{form searchForm}
{input bla}
…
{/form}
Ale připadá mi to, že to je chyba u routování.
Mám totiž aplikaci založenou na subdoménách a na to mám
speciální routy.
<?php
router[] = new Route("//<subdomain>.$domain/[<param1>][/<param2>]", array(
'module' => 'Front',
'presenter' => 'Universal',
'action' => 'default',
'domain' => $domain,
'subdomain' => NULL
));
?>
v $domain je ‚mojedomena.tld‘ a tahle routa mi dělá nejspíše
problémy.
Když mám přímo natvrdo:
<?php
router[] = new Route("//subdomena.$domain/[<param1>][/<param2>]".......
?>
tak to problémy nedělá a ten stejný form má action „/“
Ten form vykresluji v BasePresenteru a od něj dědím
v UniversalPresenteru.
V UniversalPresenteru nemám nic víc než jenom actionDefault, nějaké if,
elseif apod. dle subdomény.
- Junkman
- Člen | 3
nazdar,
pobehal som cele forum ale nikde sa mi nepodarilo najst riesenie.
mam standardny Nette 2.0.7
problem je v tom ze mam viacjazycny web v ktorom mam formular. Ked ho
odoslem tak ma presmeruje na vychozi stranku
odosielam formular z sajta.com/en/form
spracuje sa ale presmeruje ma na sajta.com/sk/form
$container->router[] = new Route('<lang (sk|en|de|hu)>/<action>',array(
'presenter' => 'Homepage',
'action' => 'home',
'lang' => 'sk'
));
routy boli vzdy pre mna zahada a nechapem preco sa generuje url s sk.
html mi to vygeneruje action s paramterom sk aj ked som na …/en/form
<form action="sajta.com/sk/form?do=myForm-submit" method="post" id="frm-myForm"...>