Po odeslání formuláře BadRequestException

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

Dobrý den, po odeslání formuláře se mi vyhodí BadRequestException. nevím čím to může být.

protected function createComponentSignInForm(){
        $form = new Nette\Application\UI\Form();
        $form->addText("email")->setAttribute("placeholder", "Email")->setRequired();
        $form->addPassword("password")->setAttribute("placeholder", "Heslo")->setRequired();
        $form->addSubmit("send", "Přihlásit");
        $form->onSuccess[] = $this->signInSucceeded;
        return $form;
    }
{form signInForm class => 'form-vertical login-form'}
                     <h3 class="form-title">Přihlášení do systému</h3>
                     <div class="alert alert-error hide">
                       <button class="close" data-dismiss="alert"></button>
                       <span>Enter any username and passowrd.</span>
                     </div>
                     <div class="control-group">
                       {label email class => 'control-label visible-ie8 visible-ie9' /}
                       <div class="controls">
                         <div class="input-icon left">
                           <i class="icon-user"></i>
                           {input email class => 'm-wrap placeholder-no-fix'}
                         </div>
                       </div>
                     </div>
                     <div class="control-group">
                       {label password class => 'control-label visible-ie8 visible-ie9' /}
                       <div class="controls">
                         <div class="input-icon left">
                           <i class="icon-lock"></i>
                           {input password class => 'm-wrap placeholder-no-fix'}
                         </div>
                       </div>
                     </div>
                     <div class="form-actions">
                       {input send class=>'btn green pull-right'}
                     </div>
       {/form}

Děkuji za pomoc

Oli
Člen | 1215
+
0
-

V tomhle problém nebude. Co je ve startup a action metodách? Není tam nějaká logika, která by to mohla způsobit? Případně nějaký špatný nastavení routeru pro signály…

bluray
Člen | 178
+
0
-

Právě že ne, takhle vypadá začátek toho presenteru:

class SignPresenter extends Nette\Application\UI\Presenter
{
    public function startup(){
        parent::startup();
        $this->setLayout("loginLayout");
    }

    public function renderDefault(){

    }

    protected function createComponentSignInForm(){

    }

A na router jsem nesahal, používám ten ze sandboxu.

Editoval bluray (20. 6. 2015 20:31)

jiri.pudil
Nette Blogger | 1032
+
0
-

Nebylo by od věci aspoň napsat, co ta výjimka obsahuje za zprávu, nebo někam rovnou nahrát celou laděnku, z toho se dá většinou vyčíst víc než z křišťálové koule :)

bluray
Člen | 178
+
0
-

píše to No route for HTTP request. tady je ta výjimka:
http://uloz.to/…ception-html

Oli
Člen | 1215
+
0
-

http://localhost:1234/sirius/www/sign/index.html

Máš zapnutej mod_rewrite?

bluray
Člen | 178
+
0
-

Jo je zapnutý

David Matějka
Moderator | 6445
+
0
-

ta adresa s index.html na konci je divna. To uz obsahuje action u formu? myslim, ze ne.. asi nekde dochazi k presmerovani, musis zjistit kde.

bluray
Člen | 178
+
0
-

problém je zřejmě v šabloně. ted jsem napsal formulář úplně znovu a když tam mám jenom {control form} tak je to v pohodě. ale když tam dám následující kod tak to prostě nefunguje.

{form pokusForm class => 'form-vertical login-form'}
    <h3 class="form-title">Přihlášení do systému</h3>
    <div class="alert alert-error hide">
        <button class="close" data-dismiss="alert"></button>
        <span>Enter any username and passowrd.</span>
    </div>
    <div class="control-group">
        {label email class => 'control-label visible-ie8 visible-ie9' /}
        <div class="controls">
            <div class="input-icon left">
                <i class="icon-user"></i>
                {input email class => 'm-wrap placeholder-no-fix'}
            </div>
        </div>
    </div>
    <div class="control-group">
        {label password class => 'control-label visible-ie8 visible-ie9' /}
        <div class="controls">
            <div class="input-icon left">
                <i class="icon-lock"></i>
                {input password class => 'm-wrap placeholder-no-fix'}
            </div>
        </div>
    </div>
    <div class="form-actions">
        {input send class=>'btn green pull-right'}
    </div>
{/form}
bluray
Člen | 178
+
0
-

v action mám normálně /www/sign

Unlink
Člen | 298
+
0
-

Skôr by si mohol poslať čo vygeneruje (HTML zdroják) ten {control form} a čo ten tvoj kód na renderovanie.

Editoval Unlink (21. 6. 2015 14:32)

bluray
Člen | 178
+
0
-

Zjednodušil jsem to jak to šlo. tohle se vygeneruje:

<form action="/sirius_old/www/sign/" method="post" id="frm-pokusForm">
       <table>
           <tr>
               <td><input type="text" name="email" placeholder="Email" id="frm-pokusForm-email" required data-nette-rules='[{"op":":filled","msg":"This field is required."}]' value="aaa"></td>
           </tr>
           <tr><td><input type="submit" name="send" value="Přihlásit"></td></tr>
       </table>
   <input type="hidden" name="do" value="pokusForm-submit"></form>

a tohle je kod:

{block content}
    {form pokusForm}
        <table>
            <tr>
                <td>{input email}</td>
            </tr>
            <tr><td>{input send}</td></tr>
        </table>
    {/form}
{/block}
Unlink
Člen | 298
+
0
-

No vyrenderované to je dobre, ale problém je v tom linku
http://localhost:1234/sirius/www/sign/index.html skús ešte ten callback poslať, lebo niekde sa to presmeruje, a ako hovorí David, musíš zistiť kde.

bluray
Člen | 178
+
0
-

Už to funguje. ta moje šablona obsahovala spoustu javascriptů a v jednom z nich byl někde redirect…
díky za pomoc