Chcę wiedzieć, czy jest możliwe dodanie nowych metod do kontrolera zasobów w Laravel i jak to się robi.
Wiem, że te metody są domyślne (indeksuj, twórz, przechowuj, edytuj, aktualizuj, niszcz). Teraz chcę dodać dodatkowe metody i trasy do tego samego kontrolera.
Czy to jest możliwe?
::resource
przeciwnym razie zostanie wyświetlony komunikat o błędzie „Brak wyników zapytania dla modelu”.Route::get('foo/{id}', ...)
. To pochłania wszystkie trasy zaczynające się odfoo
i mające jeden dodatkowy segment, w tymfoo/bar
.Właśnie to zrobiłem, aby dodać metodę GET "usuń".
Po utworzeniu plików wystarczy dodać
do „dostawców” w twojej aplikacji / config.php
Edytuj alias trasy w tym samym pliku:
zmiana na
Upewnij się, że te pliki są ładowane automatycznie, muszą znajdować się w jakimś katalogu, który masz w swoim pliku composer.json (sekcja "autoload").
Następnie wystarczy:
A to (spójrz na ostatnią linię) jest wynikiem, jeśli uruchomisz
php artisan routes
:To są moje pliki źródłowe:
ExtendedRouteFacade.pas
ExtendedRouter.pas
ExtendedRouteServiceProvider.pas
źródło
Tak, to możliwe ...
W moim przypadku dodaję metodę: dane do obsługi żądania /data.json w metodzie HTTP POST.
To co zrobiłem.
Najpierw rozszerzamy Illuminate \ Routing \ ResourceRegistrar, aby dodać nowe dane metody
Następnie utwórz nowy ServiceProvider lub zamiast tego użyj AppServiceProvider .
Podczas rozruchu metody dodaj ten kod:
następnie :
dodaj do swojej trasy:
Sprawdź przez
php artisan route:list
A znajdziesz nową metodę 'dane'źródło
Spróbuj. Dodaj dodatkowe metody, takie jak getData () itp., Itp. Pomogło mi to zachować porządek w route.php
źródło
Korzystanie z Laravel> 5 Znajdź plik web.php w folderze tras i dodaj swoje metody
Możesz użyć route :: resource do kierowania wszystkich tych metod do indeksowania, pokazywania, przechowywania, aktualizowania, niszczenia w kontrolerze w jednej linii
źródło
Po prostu dodaj nową metodę i trasę do tej metody.
W kontrolerze:
Oraz w Twoich trasach internetowych
Upewnij się tylko, że metoda w kontrolerze jest publiczna.
źródło
To też działa całkiem nieźle. Nie ma potrzeby dodawania kolejnych tras, wystarczy użyć metody show kontrolera zasobów w następujący sposób:
Używam wartości domyślnej, aby wrzucić niestandardową stronę błędu.
źródło