有没有朋友体验了,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 的方法。

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 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;
        };
    }
}
4年前 评论

@liaosp 然后还是报这个错吗

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

@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();
4年前 评论
pigzzz 4年前
liaosp (作者) (楼主) 4年前