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.

Mengomentari pertanyaan (4)

Anda mendapatkan kesalahan itu karena anda posting ke MENDAPATKAN rute.

Saya akan membagi routing untuk validasi menjadi GET dan POST 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(&#39;email&#39;); $password = Masukan::post(&#39;kata&#39;); kembali "Email: " . $email . " dan Password: " . $password; }

Komentar (0)

Kecurigaan saya adalah masalah terletak pada rute anda definisi.

Anda didefinisikan rute sebagai MENDAPATKAN permintaan tetapi bentuk ini mungkin mengirimkan permintaan POST. Perubahan rute anda definisi.

php Route::post(&#39;/memvalidasi&#39;, &#39;MemberController@validateCredentials&#39;);

It's umumnya praktek yang lebih baik untuk menggunakan nama rute (membantu untuk skala jika controller metode/perubahan kelas). php Route::post(&#39;/memvalidasi&#39;, array( &#39;sebagai&#39; => &#39;memvalidasi&#39;, &#39;menggunakan&#39; => &#39;MemberController@validateCredentials&#39; ));

Dalam bentuk penggunaan berikut <?php echo Bentuk::open(array(&#39;rute&#39; => &#39;memvalidasi&#39;)); ?>

Komentar (0)

Masalahnya adalah anda menggunakan POST tapi sebenarnya anda harus melakukan PATCH Untuk memperbaiki hal ini menambah ``html

<input name="_method" type="tersembunyi" nilai="PATCH"> `` Setelah `Bentuk::model` line
Komentar (1)

Saya mengalami masalah ini juga dan dengan jawaban yang lain di sini adalah membantu, tapi saya menggunakan Route::sumber daya yang mengurus MENDAPATKAN, POST, dan permintaan lainnya.

Dalam kasus saya, saya meninggalkan saya seperti ini:

php Rute::sumber daya(&#39;file&#39;, &#39;FilesController&#39;);

Dan hanya dimodifikasi formulir saya untuk menyerahkan ke toko fungsi saya FilesController html {{ Form::open(array(&#39;rute&#39; => &#39;file.toko&#39;)) }} Ini tetap masalah, dan saya pikir itu layak untuk menunjuk keluar sebagai jawaban yang terpisah karena berbagai jawaban yang lain menyarankan untuk menambahkan baru POST rute. Ini adalah pilihan tapi itu's tidak diperlukan.

Komentar (0)

Itu karena anda posting data untuk MENDAPATKAN rute. php Route::get(&#39;/memvalidasi&#39;, &#39;MemberController@validateCredentials&#39;); coba ini php Route::post(&#39;/memvalidasi&#39;, &#39;MemberController@validateCredentials&#39;);

Komentar (1)

Biasanya MethodNotAllowedHttpException terjadi ketika

rute metode yang tidak cocok.

Misalkan anda menentukan POST permintaan rute file, tapi anda mengirim MENDAPATKAN permintaan untuk rute ini.

Komentar (0)

<?php echo Bentuk::open(array(&#39;action&#39; => &#39;MemberController@validateCredentials&#39;)); ?>

secara default, Form::open() menganggap POST metode.

anda telah MENDAPATKAN di rute anda. perubahan itu untuk POST di rute yang sesuai.

atau jika anda ingin menggunakan MENDAPATKAN metode, kemudian tambahkan metode param.

misalnya

Bentuk::open(array(&#39;url&#39; => &#39;foo/bar&#39;, &#39;metode&#39; => &#39;mendapatkan&#39;))

Komentar (0)

Dalam kasus saya, saya mengirim permintaan POST lebih dari HTTP ke server di mana saya telah menyiapkan Nginx untuk mengarahkan semua permintaan untuk port 80 port 443 di mana saya melayani aplikasi lebih HTTPS.

Membuat permintaan untuk port yang benar langsung tetap masalah. Dalam kasus saya, semua saya harus lakukan adalah mengganti http:// dalam permintaan URL https:// sejak saya menggunakan port default 80 dan 443 masing-masing.

Komentar (1)

Saya menghadapi kesalahan, masalah BENTUK METODE

{{ Form::open(array(&#39;url&#39; => &#39;admin/dokter/edit/&#39;.$dokter->doctor_id,&#39;kelas&#39;=>&#39;bentuk-bentuk horisontal berbatasan bentuk-baris-ditelanjangi&#39;,&#39;metode&#39; => &#39;MENEMPATKAN&#39;,&#39;file&#39;=>true)) }} Ini harus menjadi seperti ini {{ Form::open(array(&#39;url&#39; => &#39;admin/dokter/edit/&#39;.$dokter->doctor_id,&#39;kelas&#39;=>&#39;bentuk-bentuk horisontal berbatasan bentuk-baris-ditelanjangi&#39;,&#39;metode&#39; => &#39;POST&#39;,&#39;file&#39;=>true)) }}

Komentar (0)

Umumnya, ada kesalahan dalam HTTP kata kerja yang digunakan misalnya:

Panggilan MENEMPATKAN rute dengan permintaan POST

Komentar (0)

Saya juga punya kesalahan yang sama tapi berbeda fix, saya XYZ.blade.php saya punya: {!! Bentuk::open(array(&#39;ul&#39; => &#39;layanan.toko&#39;)) !!} yang memberi saya kesalahan, aku masih don't tahu mengapa - tapi ketika aku berubah ke

{!! Bentuk::open(array(&#39;rute&#39; => &#39;layanan.toko&#39;)) !!}

Itu bekerja!

Saya pikir itu layak berbagi :)

Komentar (0)

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 regular terbuka metode... {!! Bentuk::open([ ... ]) !!} Karena parameter pertama untuk model 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.

Komentar (0)

nah ketika saya punya masalah ini saya menghadapi 2 kode kesalahan

{!! Form::model(['method' => 'POST','route' => ['message.store']]) !!}

saya dikoreksi dengan melakukan ini

{!! Form::open(['method' => 'POST','route' => 'message.store']) !!}

jadi hanya untuk menulis dgn panjang lebar saya berubah bentuk model untuk terbuka dan juga rute mana salah ditempatkan dalam kurung siku.

Komentar (0)

Laravel kadang-kadang tidak mendukung {!! Bentuk::open([&#39;url&#39; => &#39;posts/toko&#39;]) !!} untuk alasan keamanan. Yang's mengapa kesalahan yang telah terjadi. Anda dapat mengatasi kesalahan ini dengan hanya mengganti kode di bawah ini

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




Kode Kesalahan {!! Bentuk::open([&#39;url&#39; => &#39;posts/toko&#39;]) !!}

Kode yang Benar {!! Bentuk::open(array(&#39;rute&#39; => &#39;posting.toko&#39;)) !!}

Komentar (0)

Dalam kasus saya, itu karena saya bentuk pengiriman untuk rute dengan middleware berbeda. Sehingga diblokir dari mengirim informasi ini untuk rute-rute tertentu.

Komentar (0)

` // tidak dilakukan Route::post(&#39;/posts/{id}`', 'PostsController@toko')-> (nama'posting.toko');

kembali mengarahkan('/tulisan&#39;)->dengan('status','Posting itu dibuat !');

// lakukan Route::post('/posting', 'PostsController@toko')-> (nama'posting.toko');

kembali mengarahkan('/tulisan&#39;)->dengan('status','Posting itu dibuat !'); ``

Komentar (1)