有没有朋友体验了,Laravel-admin v1.8 的功能,帮我看一下

非常感谢 @song 更新了1.8的功能

在form表单中$form->belongsTo()功能是正常的。

我在使用grid 列表中使用 belongsTo 的时候

    $grid->column('goods_id')->belongsTo(SelectGoods::class);

报错

Declaration of Encore\Admin\Grid\Displayers\BelongsToRelation::display($selectable = NULL, $column = '') must be compatible with Encore\Admin\Grid\Displayers\AbstractDisplayer::display()

于是找到了源码,发现是因为没有实例抽象类定义的 display()规定的方法

里面的源码大致就像:

abstract class AbstractDisplayer
{
    abstract  public function display();
}

class init extends AbstractDisplayer {

    use BelongsToRelation;

    public function __construct()
    {
        $this->display();
    }
}

trait BelongsToRelation {

    public  function display($selectable =null,$column = '')
    {
        echo '实现belongsTo 的方法';
    }
}

new init();

执行这个文件,报的是和上面一样的错误。

虽然知道了错误的原因,但是我想官方都可以实现,肯定是我哪里的姿势不对吧?
所以问一下有没有小伙伴实现了grid belongsTo 的方法。

第一次提问,有点紧张,望指教。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3

@pigzzz 非常感谢您的回复,我有在SelectGoods 添加display 的方法

<?php

namespace App\Admin\SelectTable\goods;
use App\Models\Goods;
use Encore\Admin\Grid;
use Encore\Admin\Grid\Filter;
use Encore\Admin\Grid\Selectable;
//use Encore\Admin\Grid\Selectable;

/**
 * Created by PhpStorm.
 * User: liaosp
 * Date: 2020/6/2
 * Time: 17:50
 */
class SelectGoods extends Selectable
{
    public $model = Goods::class;
    /**
     * @return Grid
     */
    public function make()
    {
        $this->model()->orderBy('goods_id','desc');
        $this->filter(function (Filter $filter){
            $filter->disableIdFilter();
            $filter->like('name',__('Goods Name'));
        });
        $this->column('goods_id');
        $this->column('main_image_url')->image('','50','50');
        $this->column('name','商品名称');

    }

    public static function display()
    {
        return function ($value) {

                return $value;
        };
    }
}
3年前 评论

@liaosp 然后还是报这个错吗

3年前 评论
liaosp (楼主) 3年前
pigzzz (作者) 3年前
liaosp (楼主) 3年前

@pigzzz

我查看其它组件的源码 belongsTo 的区别是引用了trait 类,于是我试着把 在trait 的display方法移到主方法中是可以执行的。 会不会是 引用了trait产生的问题?

abstract class AbstractDisplayer
{
    abstract  public function display();
}

class init extends AbstractDisplayer {


    public  function display($selectable =null,$column = '')
    {
        echo '实现belongsTo 的方法';
    }

    public function __construct()
    {
        $this->display();
    }
}

new init();
3年前 评论
pigzzz 3年前
liaosp (作者) (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!