Saya mencoba menjalankan sesuatu yang sangat mendasar. Saya sudah terbiasa dengan CI dan sekarang mempelajari Laravel 4, dan dokumen mereka tidak membuatnya mudah! Bagaimanapun, saya mencoba membuat formulir login dan hanya memastikan bahwa data berhasil dikirim dengan mencetaknya di formulir berikutnya. Saya mendapatkan pengecualian ini:
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
dan MemberController.php saya:
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');
}
}
dan rute memiliki:
Route::get('/', function()
{
return View::make('hello');
});
Route::get('/members', 'MemberController@index');
Route::get('/validate', 'MemberController@validateCredentials');
dan akhirnya tampilan saya login.php memiliki arah bentuk ini:
<?php echo Form::open(array('action' => 'MemberController@validateCredentials')); ?>
Bantuan apa pun akan sangat dihargai.
url
Anda mendapatkan kesalahan?php artisan dump-autoload
?Jawaban:
Anda mendapatkan kesalahan itu karena Anda memposting ke
GET
rute.Saya akan membagi rute Anda
validate
menjadi ruteGET
dan terpisahPOST
.Rute Baru:
Maka metode pengontrol Anda bisa saja
sumber
Kecurigaan saya adalah masalahnya terletak pada definisi rute Anda.
Anda mendefinisikan rute sebagai
GET
permintaan tetapi formulir tersebut mungkin mengirimkanPOST
permintaan. Ubah definisi rute Anda.Biasanya praktik yang lebih baik untuk menggunakan rute bernama (membantu menskalakan jika metode pengontrol / kelas berubah).
Dalam formulir gunakan yang berikut ini
sumber
Masalahnya adalah Anda menggunakan
POST
tetapi sebenarnya Anda harus melakukanPATCH
untuk memperbaiki add iniTepat setelah
Form::model
antreansumber
{{ method_field('PATCH') }}
template Anda.Itu karena Anda memposting data melalui metode get.
Dari pada
Coba ini
sumber
Saya mengalami masalah ini juga dan jawaban lain di sini yang membantu, tapi saya menggunakan
Route::resource
yang mengurusGET
,POST
dan permintaan lainnya.Dalam kasus saya, saya meninggalkan rute saya sebagaimana adanya:
Dan cukup mengubah formulir saya untuk dikirim ke
store
fungsi di sayaFilesController
Ini memperbaiki masalah, dan saya pikir itu layak untuk ditunjukkan sebagai jawaban terpisah karena berbagai jawaban lain menyarankan untuk menambahkan
POST
rute baru . Ini adalah opsi tetapi tidak perlu.sumber
Biasanya
MethodNotAllowedHttpException
terjadi saatMisalkan Anda menentukan
POST
file rute permintaan, tetapi Anda mengirimGET
permintaan ke rute tersebut.sumber
secara default,
Form::open()
mengasumsikanPOST
metode.yang Anda miliki
GET
di rute Anda. ubah menjadiPOST
dalam rute yang sesuai.atau jika Anda ingin menggunakan
GET
metode ini, tambahkanmethod
parameter.misalnya
sumber
Saya menghadapi kesalahan,
masalahnya adalah METODE FORMULIR
Seharusnya seperti ini
sumber
Dalam kasus saya, saya mengirim
POST
permintaanHTTP
ke server tempat saya telah mengaturNginx
untuk mengarahkan semua permintaan ke port80
ke port443
tempat saya melayani aplikasiHTTPS
.Membuat permintaan ke port yang benar secara langsung memperbaiki masalah. Dalam kasus saya, yang harus saya lakukan adalah mengganti
http://
URL permintaanhttps://
karena saya menggunakan port default80
dan443
masing - masing.sumber
Umumnya, ada kesalahan pada kata kerja HTTP yang digunakan misalnya:
PUT
Rute panggilan denganPOST
permintaansumber
Masalah saya bukanlah karena rute saya salah, tetapi saya merujuk ke
Form
metode yang salah (yang telah saya salin dari bentuk yang berbeda). Saya sedang melakukan...(tanpa model yang ditentukan). Tetapi saya seharusnya menggunakan
open
metode biasa ...Karena parameter pertama
model
mengharapkan model aktual, itu tidak mendapatkan salah satu opsi saya yang saya tentukan. Semoga ini bisa membantu seseorang yang tahu rutenya benar, tetapi ada hal lain yang salah.sumber
Saya juga mengalami kesalahan yang sama tetapi memiliki perbaikan yang berbeda, saya
XYZ.blade.php
memiliki:yang memberi saya kesalahan, - Saya masih tidak tahu mengapa- tetapi ketika saya mengubahnya menjadi
Berhasil!
Saya pikir itu layak untuk dibagikan :)
sumber
Laravel terkadang tidak mendukung
{!! Form::open(['url' => 'posts/store']) !!}
karena alasan keamanan. Itulah mengapa kesalahan terjadi. Anda dapat mengatasi kesalahan ini hanya dengan mengganti kode di bawah iniKode Kesalahan Kode Yang
{!! Form::open(['url' => 'posts/store']) !!}
Benar
{!! Form::open(array('route' => 'posts.store')) !!}
sumber
Dalam kasus saya, itu karena formulir saya dikirim ke rute dengan middleware yang berbeda. Jadi itu diblokir dari pengiriman informasi ke rute khusus ini.
sumber
baik ketika saya memiliki masalah ini saya menghadapi 2 kesalahan kode
saya mengoreksinya dengan melakukan ini
jadi hanya untuk mempercepat saya mengubah formulir
model
menjadiopen
dan juga rute di mana salah ditempatkan di kurung siku.sumber
sumber