Laravel 重定向到其他模型的创建视图的背包按钮

Laravel Backpack button that redirects to other Model's create view

所以我有三个模型,Product、Sale 和 Code。每个产品都属于一个代码模型(它类似于一个用户),并且每个销售都有一个字段用于销售产品的代码和一个用于购买产品的代码。 在产品的列表视图中,我想要一个名为 'Sell' 的按钮,它将我重定向到销售的创建视图,其中传递了产品代码(基本上是所有者),这样我就可以使用产品及其代码创建销售已插入。

我按照文档 (https://backpackforlaravel.com/docs/3.4/crud-buttons) 创建自定义按钮,但是当我进入新功能的部分时(在指南中是 'moderate',对我来说是 'sell') 我无法重定向到我 运行

时创建的销售模型的创建视图(我通过单击销售的 CRUD 中的创建获得的视图)
php artisan backpack:crud Sale

我该怎么做?

N.B.: 我已经构建了所有模型的相关 CRUD。

按钮代码:sell.blade.php

@if($crud->hasAccess('update'))
   <a href="{{ url($crud->route.'/'.$entry->getKey().'/sell') }} " class="btn btn-sm btn-link"><i class="las la-dollar-sign"></i>Vendi</a>
@endif

sell ProductCrudController

中的方法
public function sell($id) {
        // add redirect to Sale's create view with the product's id and owner 
    }

销售模式

class Sale extends Model {
    //
    use CrudTrait;

    protected $guarded = [];

    public function code() {
        return $this->belongsToMany('App\Models\Code', 'code', 'code');
    }

    public function product() {
        return $this->belongsTo('App\Models\Products');
    }
}

产品型号

class Product extends Model {
    //
    use CrudTrait;

    protected $guarded = [];

    public function productCode() {
        return $this->belongsTo('App\Models\Code', 'code', 'code');
    }

    public function sales() {
        return $this->hasMany('App\Models\Sale');
    }
}

代码模型

class Code extends Model {
    //
    use CrudTrait;

    protected $guarded = [];
    protected $primaryKey = 'code';
    protected $keyType = 'string';

    public function products() {
        return $this->hasMany('App\Models\Product', 'code', 'code');
    }
}

可以像您开始那样在产品的 crud 控制器中的方法中进行重定向,但实际上我会直接在按钮中进行。

sell.blade.php 我会做这样的事情:

@if($crud->hasAccess('update'))
    <a href="{{ url('admin/sales/create/?code='.$entry->getKey() }} " class="btn btn-sm btn-link"><i class="las la-dollar-sign"></i>Vendi</a>
@endif

请注意,假设您的 sale crud 控制器的路径是 admin/sales/,如果不是这样,请修改它。

然后,在您设置字段的 Sale crud 控制器中,从 GET 参数设置字段的默认值(如果存在类似以下内容):

    $this->crud->addField([
        'name'    => 'code',
        'label'   => 'Code',
        'type'    => 'text',
        'default' => request()->input('code', ''),
    ]);