laravel melemparkan MethodNotAllowedHttpException
Saya mencoba untuk mendapatkan sesuatu yang sangat dasar berjalan. Aku digunakan untuk CI dan sekarang belajar Laravel 4, dan mereka docs tidak membuat itu mudah! Lagian, saya mencoba untuk membuat form login dan pastikan bahwa data yang berhasil dikirim dengan mencetak dalam bentuk berikutnya. Saya mendapatkan pengecualian ini:
Symfony \ Component \ HttpKernel \ Terkecuali \ MethodNotAllowedHttpException
dan saya 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');
}
}
dan rute yang telah:
Route::get('/', function()
{
return View::make('hello');
});
Route::get('/members', 'MemberController@index');
Route::get('/validate', 'MemberController@validateCredentials');
dan akhirnya saya melihat login.php memiliki bentuk arah:
<?php echo Form::open(array('action' => 'MemberController@validateCredentials')); ?>
Setiap bantuan akan sangat dihargai.
102
16
Anda mendapatkan kesalahan itu karena anda posting ke
MENDAPATKAN
rute.Saya akan membagi routing untuk
validasi
menjadiGET
danPOST
rute.Rute Baru: ``php Route::post('memvalidasi', 'MemberController@validateCredentials');
Route::get('memvalidasi', function () { return View::make('anggota/login'); }); ``
Kemudian controller metode bisa saja
php fungsi publik validateCredentials() { $email = Masukan::post('email'); $password = Masukan::post('kata'); kembali "Email: " . $email . " dan Password: " . $password; }
Kecurigaan saya adalah masalah terletak pada rute anda definisi.
Anda didefinisikan rute sebagai
MENDAPATKAN
permintaan tetapi bentuk ini mungkin mengirimkan permintaanPOST
. Perubahan rute anda definisi.php Route::post('/memvalidasi', 'MemberController@validateCredentials');
It's umumnya praktek yang lebih baik untuk menggunakan nama rute (membantu untuk skala jika controller metode/perubahan kelas).
php Route::post('/memvalidasi', array( 'sebagai' => 'memvalidasi', 'menggunakan' => 'MemberController@validateCredentials' ));
Dalam bentuk penggunaan berikut
<?php echo Bentuk::open(array('rute' => 'memvalidasi')); ?>
Masalahnya adalah anda menggunakan
<input name="_method" type="tersembunyi" nilai="PATCH"> `` Setelah `Bentuk::model` linePOST
tapi sebenarnya anda harus melakukanPATCH
Untuk memperbaiki hal ini menambah ``htmlSaya mengalami masalah ini juga dan dengan jawaban yang lain di sini adalah membantu, tapi saya menggunakan
Route::sumber daya
yang mengurusMENDAPATKAN
,POST
, dan permintaan lainnya.Dalam kasus saya, saya meninggalkan saya seperti ini:
php Rute::sumber daya('file', 'FilesController');
Dan hanya dimodifikasi formulir saya untuk menyerahkan ke
toko
fungsisaya FilesController
html {{ Form::open(array('rute' => 'file.toko')) }}
Ini tetap masalah, dan saya pikir itu layak untuk menunjuk keluar sebagai jawaban yang terpisah karena berbagai jawaban yang lain menyarankan untuk menambahkan baruPOST
rute. Ini adalah pilihan tapi itu's tidak diperlukan.Itu karena anda posting data untuk
MENDAPATKAN
rute.php Route::get('/memvalidasi', 'MemberController@validateCredentials');
coba iniphp Route::post('/memvalidasi', 'MemberController@validateCredentials');
Biasanya
MethodNotAllowedHttpException
terjadi ketikaMisalkan anda menentukan
POST
permintaan rute file, tapi anda mengirimMENDAPATKAN
permintaan untuk rute ini.<?php echo Bentuk::open(array('action' => 'MemberController@validateCredentials')); ?>
secara default,
Form::open()
menganggapPOST
metode.anda telah
MENDAPATKAN
di rute anda. perubahan itu untukPOST
di rute yang sesuai.atau jika anda ingin menggunakan
MENDAPATKAN
metode, kemudian tambahkanmetode
param.misalnya
Bentuk::open(array('url' => 'foo/bar', 'metode' => 'mendapatkan'))
Dalam kasus saya, saya mengirim permintaan
POST
lebih dariHTTP
ke server di mana saya telah menyiapkanNginx
untuk mengarahkan semua permintaan untuk port80
port443
di mana saya melayani aplikasi lebihHTTPS
.Membuat permintaan untuk port yang benar langsung tetap masalah. Dalam kasus saya, semua saya harus lakukan adalah mengganti
http://
dalam permintaan URLhttps://
sejak saya menggunakan port default80
dan443
masing-masing.Saya menghadapi kesalahan, masalah BENTUK METODE
{{ Form::open(array('url' => 'admin/dokter/edit/'.$dokter->doctor_id,'kelas'=>'bentuk-bentuk horisontal berbatasan bentuk-baris-ditelanjangi','metode' => 'MENEMPATKAN','file'=>true)) }}
Ini harus menjadi seperti ini{{ Form::open(array('url' => 'admin/dokter/edit/'.$dokter->doctor_id,'kelas'=>'bentuk-bentuk horisontal berbatasan bentuk-baris-ditelanjangi','metode' => 'POST','file'=>true)) }}
Umumnya, ada kesalahan dalam HTTP kata kerja yang digunakan misalnya:
Panggilan
MENEMPATKAN
rute dengan permintaanPOST
Saya juga punya kesalahan yang sama tapi berbeda fix, saya
XYZ.blade.php
saya punya:{!! Bentuk::open(array('ul' => 'layanan.toko')) !!}
yang memberi saya kesalahan, aku masih don't tahu mengapa - tapi ketika aku berubah ke{!! Bentuk::open(array('rute' => 'layanan.toko')) !!}
Itu bekerja!
Saya pikir itu layak berbagi :)
Masalah saya adalah bahwa saya tidak rute yang ditetapkan tidak benar, tetapi bahwa saya adalah referensi yang salah
Bentuk
metode (yang saya telah disalin dari bentuk yang berbeda). Yang saya lakukan...{!! Bentuk::model([ ... ]) !!}
(dengan tidak ada model tertentu). Tapi aku harus telah menggunakan regularterbuka
metode...{!! Bentuk::open([ ... ]) !!}
Karena parameter pertama untukmodel
mengharapkan sebuah model yang asli, itu tidak mendapatkan apapun dari saya, pilihan saya yang menentukan. Semoga ini bisa membantu seseorang yang tahu rute mereka adalah benar, tapi ada sesuatu yang lain yang salah.nah ketika saya punya masalah ini saya menghadapi 2 kode kesalahan
saya dikoreksi dengan melakukan ini
jadi hanya untuk menulis dgn panjang lebar saya berubah bentuk
model
untukterbuka
dan juga rute mana salah ditempatkan dalam kurung siku.Laravel kadang-kadang tidak mendukung
{!! Bentuk::open(['url' => 'posts/toko']) !!}
untuk alasan keamanan. Yang's mengapa kesalahan yang telah terjadi. Anda dapat mengatasi kesalahan ini dengan hanya mengganti kode di bawah iniKode Kesalahan
{!! Bentuk::open(['url' => 'posts/toko']) !!}
Kode yang Benar
{!! Bentuk::open(array('rute' => 'posting.toko')) !!}
Dalam kasus saya, itu karena saya bentuk pengiriman untuk rute dengan middleware berbeda. Sehingga diblokir dari mengirim informasi ini untuk rute-rute tertentu.
`
// tidak dilakukan Route::post('
/posts/{id}`', 'PostsController@toko')-> (nama'posting.toko');kembali mengarahkan('
/tulisan'
)->dengan('status','Posting itu dibuat !');// lakukan Route::post('
/posting
', 'PostsController@toko')-> (nama'posting.toko');kembali mengarahkan('
/tulisan'
)->dengan('status','Posting itu dibuat !'); ``