在 Dcat Admin 中,如果一个表格是通过 $show->relation 调用的,那么无法正常导出,比如下面的代码在导出的时候会打开一个新的网页,但不会执行导出操作。

protected function detail($id)
{
    return Show::make($id, Exam::with(['examinees']), function (Show $show) {
        $show->field('title');
        $show->relation('考生', function ($model) {
            $grid = new Grid(new Examinee());
            $grid->model()->where('exam_id', $model->id);
            $grid->column('name','性别');
            $grid->column('number','准考证号');
            $grid->export()//此时无法正常导出
            return $grid;
        )};
    });
}

解决办法是通过自定义页面的方式,将上面的代码修改成下面的方式:

public function show($id,Content $content)
{
    return $content->title('考试详情')
                   ->body($this->detail($id))
                   ->body($this->examinees($id));
}

protected function detail($id)
{
    return Show::make($id, Exam::with(['examinees']), function (Show $show) {
        $show->field('title');
    });
}

protected function $examinees($id){
    $grid = new Grid(new Examinee());
    $grid->model()->where('exam_id', $model->id);
    $grid->column('name','性别');
    $grid->column('number','准考证号');
    $grid->export()//这时就可以正常导出了
    return $grid;
}
(adsbygoogle = window.adsbygoogle || []).push({});