【问题标题】:Backpack 4.1 Routes syntaxBackpack 4.1 路由语法
【发布时间】:2021-07-27 23:22:33
【问题描述】:

我正在将 Laravel 5.4 更新到 Laravel 8,到目前为止一切都“顺利”,这很耗时,但升级值得。

我的问题是我对Backpack不是很了解,而且升级幅度很大。

我现在坚持使用新的路由语法,其中处理路由自定义的 CRUD::resource 外观不再可用。

以下“简化”自定义路由文件的正确方法是什么。 (我删除了我已经想到的所有内容)

Route::group([
        'prefix'     => config('backpack.base.route_prefix', 'admin'),
        'middleware' => [
            'web',
            config('backpack.base.middleware_key', 'admin'),
        ],
        'namespace'  => 'App\Http\Controllers\Admin',
    ], function() { // custom admin routes

        Route::get('report', function() {
            $clients  = ClientWithSubscription::get();
            $clientsT = transformer()->transform($clients);
            return view('clients')->withClients($clientsT['data']);
        });

        // Client
        CRUD::resource('client', 'ClientCrudController');
        Route::group(['prefix' => 'client/{client_id}'], function() {
            CRUD::resource('address', 'ClientAddressCrudController');
            CRUD::resource('subscription', 'ClientSubscriptionCrudController');
        });

        // Taxonomy
        foreach (['theme', 'tag', 'subject', 'utility', 'document_type', 'special_need', 'level', 'platform', 'other', 'shop',] as $taxonomy) {
            CRUD::resource('taxonomy/' . $taxonomy, 'TaxonomyCrudController');
        }

        // Items
        CRUD::resource('item/document', 'ItemDocumentCrudController');

        // Referrals
        CRUD::resource('referrals', 'ReferralCrudController')->with(function() {
            Route::post('referrals/mark-paid/{id?}', 'ReferralCrudController@markPaid');
            Route::post('referrals/mark-unpaid/{id?}', 'ReferralCrudController@markUnpaid');
            Route::post('referrals/edit-notes/{id}', 'ReferralCrudController@editNotes');
        });
});

我的问题是

  • 如何为所有 crud 路由添加前缀?
  • 如果 CrudController 使用默认路由,那意味着我根本不需要声明它,Backpack 会处理它?
  • 如何向 CRUD Route 添加自定义方法?

谢谢!

【问题讨论】:

    标签: laravel laravel-backpack


    【解决方案1】:

    需要进行两项更改:

    • 你现在应该使用Route::crud('item/document', 'ItemDocumentCrudController'); 而不是CRUD::resource('item/document', 'ItemDocumentCrudController');
    • ->with() 闭包内的额外路由应移到适当的Route::crud() 语句之后;

    更多详情请见this step in the Backpack upgrade process

    此外,请确保升级到 Backpack 4.0(使用其升级指南),并且只有在它能够升级到 Backpack 4.1(最新版本)之后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多