Estou tentando fazer algo muito básico funcionar. Estou acostumado com CI e agora aprendendo Laravel 4, e seus documentos não estão facilitando! De qualquer forma, estou tentando criar um formulário de login e apenas garantir que os dados sejam postados com sucesso imprimindo-o no próximo formulário. Estou recebendo esta exceção:
e meu MemberController.php:
e as rotas tem:
e, finalmente, minha visão login.php tem esta direção de formulário:
Em que urlvocê está recebendo o erro?
Você já tentou php artisan dump-autoload?
Postagem antiga, mas as pessoas ainda tropeçam nela - tente "composer dump-autoload". Funcionou para mim.
— kirgy
@Andreyco este comando não está definido.
— Marcelo Agimóvel 02/11/17
Você está recebendo esse erro porque está postando em uma GETrota.
Gostaria de dividir o seu encaminhamento para validateem um separado GETe POSTrotas.
Então, seu método de controle pode ser apenas
— cavalo de feno
Minha suspeita é que o problema está na definição de sua rota.
Você definiu a rota como uma GETsolicitação, mas o formulário provavelmente está enviando uma POSTsolicitação. Mude sua definição de rota.
Geralmente é uma prática melhor usar rotas nomeadas (ajuda a escalar se o método / classe do controlador mudar).
Route::post('/validate', array(
'as' => 'validate',
'uses' => 'MemberController@validateCredentials'
No formulário, use o seguinte
O problema é o que você está usando, POSTmas na verdade você precisa executar PATCH Para corrigir este add
Logo depois da Form::modellinha
no Laravel você pode usar {{ method_field('PATCH') }}em seu template.
— Michael Yousrie
Isso ocorre porque você está postando dados por meio de um método get.
— minitechi
Isso está correto. Um moderador pode dar a resposta correta se o usuário não o fizer? Esta é a terceira resposta para baixo e é a única que está certa.
— logos_164
Eu encontrei este problema tão bem e as outras respostas aqui foram úteis, mas eu estou usando um Route::resourceque cuida de GET, POSTe outras solicitações.
No meu caso, deixei minha rota como está:
E simplesmente modifiquei meu formulário para submeter à storefunção em meuFilesController
Isso corrigiu o problema e achei que valia a pena apontar como uma resposta separada, já que várias outras respostas sugerem a adição de uma nova POSTrota. Esta é uma opção, mas não é necessária.
Normalmente MethodNotAllowedHttpExceptionacontece quando
método de rota não corresponde.
Suponha que você defina o POSTarquivo de rota de solicitação, mas está enviando uma GETsolicitação para a rota.
— kousher alam pranto
por padrão, Form::open()assume um POSTmétodo.
você tem GETem suas rotas. altere-o para POSTna rota correspondente.
ou se você quiser usar o GETmétodo, adicione o methodparâmetro.
Encontrei o erro, o
problema era FORM METHOD
— Faruk Omar
No meu caso, eu estava enviando uma POSTsolicitação HTTPpara um servidor onde havia configurado Nginxpara redirecionar todas as solicitações de porta 80para porta 443onde eu estava servindo o aplicativo HTTPS.
Fazer a solicitação à porta correta corrigiu diretamente o problema. No meu caso, tudo o que tive que fazer foi substituir http://na URL de solicitação para, https://já que estava usando as portas padrão 80e 443respectivamente.
Este foi o problema que enfrentei e esta resposta provou ser a solução. Obrigado
— Oluwatobi Samuel Omisakin
Geralmente, há um erro no verbo HTTP usado, por exemplo:
PUTRota de chamada com POSTpedido
— Slimane MEHARZI
Meu problema não era que minhas rotas estavam configuradas incorretamente, mas que eu estava me referindo ao Formmétodo errado (que copiei de um formulário diferente). Eu estava fazendo...
(sem modelo especificado). Mas eu deveria estar usando o openmétodo normal ...
Porque o primeiro parâmetro para modelesperar um modelo real, ele não estava recebendo nenhuma das minhas opções que eu estava especificando. Espero que isso ajude alguém que sabe que suas rotas estão corretas, mas algo mais está errado.
— philthathril
Eu também tive o mesmo erro, mas tive uma correção diferente, no meu XYZ.blade.php:
que me deu o erro - ainda não sei por quê - mas quando mudei para
Achei que valia a pena compartilhar :)
Laravel às vezes não oferece suporte {!! Form::open(['url' => 'posts/store']) !!}por razões de segurança. É por isso que o erro aconteceu. Você pode resolver esse erro simplesmente substituindo o código abaixo
Código de Erro Código {!! Form::open(['url' => 'posts/store']) !!}
Correto{!! Form::open(array('route' => 'posts.store')) !!}
— Islã Ariful
No meu caso, foi porque meu formulário estava enviando para uma rota com um middleware diferente. Portanto, ele bloqueou o envio de informações para esta rota específica.
— GabrielFiel
bem, quando eu tive esses problemas, encontrei 2 erros de código
eu corrigi fazendo isso
então, apenas para explicar, mudei a forma modelpara opene também a rota onde foi colocada incorretamente entre colchetes.