Saya ingin tahu apakah mungkin untuk menambahkan metode baru ke pengontrol sumber daya di Laravel dan bagaimana Anda melakukannya.
Saya tahu bahwa metode ini adalah default (indeks, buat, simpan, edit, perbarui, musnahkan). Sekarang saya ingin menambahkan metode dan rute tambahan ke pengontrol yang sama.
Apakah itu mungkin?
::resource
jika Anda mendapatkan pesan kesalahan, "Tidak ada hasil query untuk model".Route::get('foo/{id}', ...)
. Ini menelan semua rute yang dimulai denganfoo
dan memiliki satu segmen tambahan, termasukfoo/bar
.Saya baru saja melakukannya, untuk menambahkan metode "hapus" DAPATKAN.
Setelah membuat file, Anda hanya perlu menambahkan
ke 'penyedia' di aplikasi / config.php Anda
Edit alias Rute dalam file yang sama ini:
mengubahnya menjadi
Dan pastikan file-file itu sedang dimuat secara otomatis, mereka harus ada di beberapa direktori yang Anda miliki di composer.json Anda (bagian "pengisian otomatis").
Maka Anda hanya perlu:
Dan ini (lihat baris terakhir) adalah hasilnya jika Anda menjalankan
php artisan routes
:Itu adalah file sumber saya:
ExtendedRouteFacade.pas
ExtendedRouter.pas
ExtendedRouteServiceProvider.pas
sumber
Ya, itu mungkin ..
Dalam kasus saya, saya menambahkan metode: data untuk menangani permintaan untuk / data.json dalam metode HTTP POST.
Ini yang saya lakukan.
Pertama kita memperluas Illuminate \ Routing \ ResourceRegistrar untuk menambahkan data metode baru
Setelah itu, buat ServiceProvider baru Anda atau gunakan AppServiceProvider sebagai gantinya.
Dalam metode boot , tambahkan kode ini:
kemudian :
tambahkan ke rute Anda:
Periksa oleh
php artisan route:list
Dan Anda akan menemukan 'data' metode barusumber
Cobalah ini. Tolong Anda metode tambahan seperti getData () dll. Ini berfungsi agar saya menjaga route.php tetap bersih
sumber
Menggunakan Laravel> 5 Temukan file web.php di folder rute, tambahkan metode Anda
Anda dapat menggunakan route :: resource untuk merutekan semua metode ini dengan indeks, menunjukkan, menyimpan, memperbarui, menghancurkan di controller Anda dalam satu baris
sumber
Cukup tambahkan metode baru dan rute ke metode itu.
Di controller Anda:
Dan di rute web Anda
Pastikan metode di pengontrol bersifat publik.
sumber
Ini bekerja sangat bagus juga. Tidak perlu menambahkan rute lagi cukup gunakan metode show dari pengontrol sumber daya seperti ini:
Saya menggunakan default untuk membuang halaman kesalahan khusus.
sumber