2017-02-03 9 views
0

Ich versuche, Login-Formular in Laravel 4.2 + Sentry zu machen. Das Problem ist, dass wenn ich das Formular abschicke, habe ich den Fehler, dass Methode nicht erlaubt ist.Kann nicht sehen, warum der Fehler MethodNotAllowedHttpException

Wenn ich mein Formular in der Quelle überprüfe, hat es method="POST" und auch in der Route, die ich geschrieben habe post. Was kann das Problem sein?

MethodNotAllowedHttpException

aber nicht, warum? Dies ist die Form

 {{ Form::open(array('route' => 'check-auth')) }} 
      <div class="body bg-gray"> 
       {{-- Display flash message --}} 
       @if (Session::has('flash_message')) 
        <span style="margin-left:18%; color: #ff0000">{{ Session::get('flash_message') }}</span> 
       @endif 

       <div class="form-group"> 
        <input type="text" name="email" class="form-control" placeholder="User email"/> 
        @if($errors->has('login_errors')) <span class="has-error">{{ $errors->first('email') }}</span> @endif 
       </div> 
       <div class="form-group"> 
        <input type="password" name="password" class="form-control" placeholder="User password"/> 
       </div> 
      <button type="submit" name="submitbtn" class="btn bg-olive btn-block">Sign me in</button> 
      </div> 
     {{ Form::close() }} 

Strecke

Route::post('user-login', ['as'=>'check-auth', 'uses'=>'[email protected]']); 

und Controller

public function login() 
{ 
    try{ 
     $credentials = array(
      'email'  => Input::get('email'), 
      'password' => Input::get('password') 

     ); 

     $user = Sentry::authenticate($credentials, false); 
     if($user){ 
      return Redirect::to('dashboard'); 
     } 

     return Redirect::to('/')->with('title','Login errors'); 
    } 
    catch(Exception $e){ 
     echo $e->getMessage(); 
     Session::flash('flash_message', 'No access!'); 
     return Redirect::to('/')->with('title','Login errors'); 
    } 
} 

UPDATE: Fehler

production.ERROR: Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException in /var/www/html/time/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php:210 
+0

Es könnte hilfreich sein, uns auch die Ausnahme zu zeigen. – Chris

+0

@Chris Ich habe die Frage aktualisiert. Dies ist, was ich nur sehe. – VLS

+0

Angesichts der Code, den Sie angegeben haben, sehe ich keine Probleme. Du musst mehr Code posten und wie @ Chris gesagt hat, zeige die ganze Ausnahme. – Andrew

Antwort

1

Sie sind Route ist korrekt, das einzige, was ich vorschlagen könnte, wäre, den Typ an die Öffnung des Formulars anfügen:
{{ Form::open(['url' => 'check-auth', 'method' => 'post']) }}

+0

Danke, das funktioniert, aber ich kann nicht verstehen, warum das funktioniert, aber andere nicht .. da sie gleich sind? – VLS

+0

Ich glaube, dass es ein weiteres verstecktes Feld zu dem Formular hinzufügen, zumindest ist es in L5 mit dem Paket, seit ich Laravel 4 verwendet habe. @VLS – mbozwood

1

{{Formular :: Open (array ('Weg' => 'check-auth'))}}

See, Sie verwenden Route Check-Auth und in Routen Datei, die Sie eine andere Route dh Benutzer-Login definiert

Route::post('user-login', ['as'=>'check-auth', 'uses'=>'[email protected]']); 

richtige Route und erneut versuchen wird diese

+0

'check-auth' ist der Name der Route und sollte mit dem Formular so arbeiten wie es ist. – Chris

+0

@Manvir, funktioniert immer noch nicht. – VLS

1

Statt Post Einsatz arbeiten (Es kann immer noch Dinge posten, aber Sie können auch abrufen)

Verwandte Themen