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

Posted

技术标签:

【中文标题】重定向到其他模型的创建视图的 Laravel 背包按钮【英文标题】:Laravel Backpack button that redirects to other Model's create view 【发布时间】:2020-09-24 16:57:23 【问题描述】:

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

我按照文档 (https://backpackforlaravel.com/docs/3.4/crud-buttons) 创建了一个自定义按钮,但是当我进入新功能内部的部分时(在指南中它是“中等”,对我来说它是“销售”)我无法重定向到我运行时创建的销售模型的创建视图(我通过单击销售的 CRUD 中的创建获得)

php artisan backpack:crud Sale

我该怎么做?

注意:我已经构建了所有模型的相关 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

ProductCrudController中的sell方法

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');
    

【问题讨论】:

能否为您的自定义按钮和显示关系的模型添加代码? 好的,我现在加了 【参考方案1】:

可以按照您开始在产品的 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

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

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

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

【讨论】:

伙计,很抱歉迟到了,但非常感谢!这实际上比我想象的要简单得多!谢谢大佬

以上是关于重定向到其他模型的创建视图的 Laravel 背包按钮的主要内容,如果未能解决你的问题,请参考以下文章

使用Laravel 5.7中的Auth激活用户会话时重定向到页面的方法

如何通过重定向将数据传递到laravel中的视图

如何在 Laravel 4 中将一个路由重定向到 HTTPS,将所有其他路由重定向到 HTTP?

如何使用获取参数将 laravel (5.3) 路由重定向到其他路由

在 Laravel 5.8 中会话过期时重定向到其他路由

重定向进入空白页面而不重定向到路由 Laravel 5.8