Нужен Laravel Route :: контроллер и Route :: контроллеры - PullRequest
0 голосов
/ 27 сентября 2019

Как мы знаем в Laravel 5.2, метод Route::controller() и Route::controllers() устарел, но он был очень удобен для сокращения количества маршрутов.Мне удалось написать простой маршрут, подобный этому Route::controller('admin/invoice','InvoiceController').С помощью этого простого единственного маршрута я могу управлять всем, что связано с выполнением операций, связанных со счетами, с помощью контроллера.

class InvoiceController extends Controller{
   public function getInvoices(){ }
   public function getInvoiceDetails(){ }
   public function postStoreInvoice(){ }
   public function postUpdateInvoice(){ }
   public function postStoreInvoiceDetails(){ }
   public function postupdateInvoiceDetails(){ }

   public function postDeleteInvoice(){ }
   public function postDeleteInvoiceDetails(){ }

   ....
}

, но, к сожалению, эти Route::controller() и Route::controllers() больше не доступны в версии laravel> 5.1.Доступна опция Route::resource(), но у нее ограниченное количество маршрутов.Маршрут laravel является Macroable, есть возможность расширить функции маршрута, такие как

Illuminate\Routing\Router::macro('controller', function ($routes) {
    // implementation
});

Есть ли кто-нибудь, кто реализует метод Route::controller() и Route::controllers() для Laravel 5.8, 6?или предложить какой-либо способ.

1 Ответ

1 голос
/ 27 сентября 2019

Вы можете использовать Route::resource() или Route::resources().

Пример:

Route::resource('books', 'BookController');

это предполагает, что у вас есть

class BookController extends Controller {
    // to list resources.
    public function index();

    // to show create form. 
    public function create(); 

    // to store resource in database. 
    public function store(); 

    // to show single resource. 
    public function show(); 

    // to show edit form. 
    public function edit(); 

    // to edit and then store the modified resource in database. 
    public function update();

    // to delete a resource from database. 
    public function destroy(); 
}

Вы должны прочитать https://laravel.com/docs/master/controllers#resource-controllers для получения дополнительной информации.

Редактировать

По какой-то причине неявные контроллеры были удалены в версии 5.2.

Есливы пришли из мира CodeIgniter, тогда у вас могут возникнуть теплые и нечеткие чувства к неявной маршрутизации.Вы знаете, где URI совпадает с методом контроллера, который будет вызван.Возможно, вы даже захотите это для разработки Laravel (что может сделать Laravel).

Хотя сначала может показаться полезным просто вызвать Route :: controller ('admin', 'AdminController'), а затем объявить всежелаемые маршруты от контроллера, есть ряд препятствий для этого.Подумайте, как бы вы, используя неявную маршрутизацию, использовали именованные маршруты или создавали вложенные ресурсы, или даже делали что-то столь же простое, как переименование класса вашего контроллера, не затрагивая ваш URI-дизайн.

Нет, когда речь идет о неявноммаршрутизация, просто скажите нет.

source : https://laracasts.com/lessons/say-no-to-implicit-routing

Однако, если вы хотите эту функциональность, вы можете использовать этот пакет: Laravel Routes Publisher или Расширенный маршрут Laravel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...