lancio di laravel MethodNotAllowedHttpException

Sto cercando di ottenere una corsa molto semplice. Sono abituato a IC e ora sto imparando Laravel 4, ei loro documenti non lo rendono facile! Ad ogni modo, sto cercando di creare un modulo di accesso e mi assicuro solo che i dati vengano pubblicati correttamente stampandoli nel modulo successivo. Sto ottenendo questa eccezione:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException

e il mio MemberController.php:

public function index() { if (Session::has('userToken')) { /*Retrieve data of user from DB using token & Load view*/ return View::make('members/profile'); }else{ return View::make('members/login'); } } public function validateCredentials() { if(Input::post()) { $email = Input::post('email'); $password = Input::post('password'); return "Email: " . $email . " and Password: " . $password; }else{ return View::make('members/login'); } } 

e percorsi ha:

 Route::get('/', function() { return View::make('hello'); }); Route::get('/members', '[email protected]'); Route::get('/validate', '[email protected]'); 

e infine la mia vista login.php ha questa forma:

  '[email protected]')); ?> 

Qualsiasi aiuto sarà molto apprezzato.

Si sta verificando questo errore perché si sta eseguendo il POST su una route GET.

Vorrei suddividere il vostro routing per “validare” in percorsi GET e POST separati. Nuove rotte:

 Route::post('validate', '[email protected]'); Route::get('validate', function() { return View::make('members/login'); }); 

Quindi il tuo metodo di controllo potrebbe essere solo

 public function validateCredentials() { $email = Input::post('email'); $password = Input::post('password'); return "Email: " . $email . " and Password: " . $password; } 

Il problema è che stai usando il POST, ma in realtà devi eseguire PATCH per risolvere questo problema

  

Subito dopo la linea Form :: model

Il mio sospetto è che il problema risieda nella definizione della rotta. Hai definito il percorso come una richiesta “ottieni”, ma il modulo probabilmente sta inviando una richiesta “post”. Modifica la definizione del percorso.

 Route::post('/validate', '[email protected]'); 

In genere è meglio usare le rotte nominate (aiuta a ridimensionare se cambia il metodo / la class del controllore).

 Route::post('/validate', array('as' => 'validate', 'uses' => 'Memb[email protected]')); 

Nel modulo utilizzare il seguente

  'validate')); ?> 

Ho riscontrato anche questo problema e le altre risposte qui sono state utili, ma sto utilizzando una Route::resource che si occupa di GET , POST e altre richieste.

Nel mio caso ho lasciato la mia rotta così com’è:

Route::resource('file', 'FilesController');

E semplicemente modificato il mio modulo per inoltrare la funzione di store nel mio FilesController

{{ Form::open(array('route' => 'file.store')) }}

Questo ha risolto il problema, e ho pensato che valesse la pena indicarlo come una risposta separata poiché varie altre risposte suggeriscono di aggiungere una nuova rotta POST . Questa è un’opzione ma non è necessaria.

'[email protected]')); ?>

per impostazione predefinita, Form::open() presuppone il metodo POST .

hai percorso i tuoi percorsi. cambiala per post nel percorso corrispondente.

o se si desidera utilizzare il metodo get, quindi aggiungere il parametro param.

per esempio

Form::open(array('url' => 'foo/bar', 'method' => 'get'))

Ho affrontato l’errore,
il problema era il MODULO DI MODULO

  {{Form :: open (array ('url' => 'admin / doctor / edit /'.$ doctor-> doctor_id,' class '=>' form-horizontal form-bordered form-row-stripped ',' metodo '=>' PUT ',' files '=> true))}}

dovrebbe essere così

  {{Form :: open (array ('url' => 'admin / doctor / edit /'.$ doctor-> doctor_id,' class '=>' form-horizontal form-bordered form-row-stripped ',' metodo '=>' POST ',' files '=> true))}}

Generalmente c’è un errore nel verbo HTTP usato ad esempio: Calling PUT route con POST request

Il mio problema non era che i miei percorsi fossero impostati in modo errato, ma che stavo riferendo al metodo Form sbagliato (che avevo copiato da un modulo diverso). Stavo facendo…

 {!! Form::model([ ... ]) !!} 

(senza modello specificato). Ma avrei dovuto usare il metodo open normale …

 {!! Form::open([ ... ]) !!} 

Poiché il primo parametro da model prevede un modello reale, non stava ottenendo nessuna delle mie opzioni che stavo specificando. Spero che questo aiuti qualcuno che sa che i loro percorsi sono corretti, ma qualcos’altro non funziona.

ho anche avuto lo stesso errore ma ho avuto una correzione diversa, nel mio XYZ.blade.php ho avuto:

 {!! Form::open(array('url' => 'services.store')) !!} 

che mi ha dato l’errore, – non lo so ancora adesso – ma quando l’ho cambiato

{!! Form::open(array('route' => 'services.store')) !!}

ha funzionato!

ho pensato che valesse la pena di condividerlo 🙂

Nel mio caso stavo inviando una richiesta POST su HTTP a un server in cui avevo impostato nginx per redirect tutte le richieste alla porta 80 alla porta 443 dove stavo servendo l’app su HTTPS.

Effettuare la richiesta sulla porta corretta ha risolto direttamente il problema. Nel mio caso tutto quello che dovevo fare è sostituire (http: //) nell’URL di richiesta a (https: //) dato che stavo usando le porte predefinite 80 e 443 rispettivamente.

bene quando ho avuto questi problemi ho dovuto affrontare 2 errori di codice {!! Form::model(['method' => 'POST','route' => ['message.store']]) !!} {!! Form::model(['method' => 'POST','route' => ['message.store']]) !!} ho corretto facendo questo {!! Form::open(['method' => 'POST','route' => 'message.store']) !!} {!! Form::open(['method' => 'POST','route' => 'message.store']) !!}

quindi, solo per expanciate ho cambiato il model modulo per open e anche il percorso in cui erroneamente posizionato in parentesi quadre.

Laravel a volte non supporta {!! Form::open(['url' => 'posts/store']) !!} {!! Form::open(['url' => 'posts/store']) !!} per motivi di sicurezza. Ecco perché l’errore è successo. Puoi risolvere questo errore semplicemente sostituendo il codice sottostante

 {!! Form::open(array('route' => 'posts.store')) !!} 

Codice di errore {!! Form::open(['url' => 'posts/store']) !!} {!! Form::open(['url' => 'posts/store']) !!}

Codice corretto {!! Form::open(array('route' => 'posts.store')) !!} {!! Form::open(array('route' => 'posts.store')) !!}

Nel mio caso, era perché il mio modulo stava inviando a un percorso con un middleware diverso. Quindi ha impedito di inviare informazioni a questo specifico percorso.