首页 > 解决方案 > 如何使用 Datatables Yajra 在 Laravel 上下载文件

问题描述

我有一个表数据,并且正在使用数据表 yajra。它运行正常。我已添加按钮下载以下载文件。此文件类型为 Pdf ,并保存在数据库中。我试图在没有数据表的情况下构建它并且它有效。像这样(只是例子):

@foreach ($riwayat as $i)
                      <tr class="even pointer">
                        <td class="a-center ">{{ ++$no }}</td>
                        <td class=" ">{{ $i->users->nama}} </td>
                        <td class=" ">{{ $i->nama_surat}}</td>
                        <td class=" ">{{ $i->tanggal_terbit}}</td>
                        <td class=" ">{{ $i->penerbit}}</td>
                        <td class=" "><a href="file_str/{{ $i->file}}" download={{ $i->file}}><button class="btn btn-primary btn-md">Download</button></a></td> // its my download button and work

                      </tr>
                      @endforeach 

此下载文件正常工作,“下载”上没有制作控制器功能和路由功能

但是当我用数据表服务器端构建它时。当我将光标悬停在下载按钮上时,它没有显示正确的 URL。

你可以在下面看到我的代码:

public function indexDataTables()
{

    $pelatihan = Master_seminar_pelatihan::with('users')->get();

        return Datatables::of($pelatihan)
        ->addIndexColumn()
        ->addColumn('edit', function ($pelatihan) {
            return '<a href="/pelatihan/'.$pelatihan->id.'/edit" class="btn btn-xs btn-success"><i class="glyphicon glyphicon-edit"></i> Edit</a>';
        })// this edit CAN SHOW id 
        ->editColumn('download', function ($pelatihan) {
            return '<a href="file_pelatihan/'.$pelatihan->file_scan.'" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-download-alt"></i></a>';
        })// this download didnt work , this url didnt show file like file.pdf
        ->editColumn('hapus', function ($pelatihan) {

            $c = csrf_field();
            $m = method_field('DELETE');

        return "<form action='/delete1/$pelatihan->id' method='POST'>
                $c
                $m

                <button style='margin-left:10px; width: 30px;' type='submit'
                        class='btn btn-xs btn-danger delete'>
                    <i class='glyphicon glyphicon-remove-circle'></i>
                </button>
            </form>";
        })
        ->rawColumns(['hapus' => 'hapus','edit'=>'edit','download'=>'download'])

        ->make(true);

}

此下载文件功能不起作用。

标签: laraveldatatables

解决方案


尝试这个 :

public function indexDataTables()
{

$pelatihan = Master_seminar_pelatihan::with('users')->get();

    return Datatables::of($pelatihan)
    ->addIndexColumn()

    ->addColumn('edit', function ($pelatihan) {
        return '<a href="/pelatihan/'.$pelatihan->id.'/edit" class="btn btn-xs btn-success"><i class="glyphicon glyphicon-edit"></i> Edit</a>';
    })

    ->editColumn('download', function ($pelatihan) {
        return '<a href="'.asset("public/yourpath/yourfile.extension") .'" class="btn btn-xs  btn-primary"><i class="glyphicon glyphicon-download-alt"></i></a>';
    })

    ->editColumn('hapus', function ($pelatihan) {
        $c = csrf_field();
        $m = method_field('DELETE');

       return "<form action='/delete1/$pelatihan->id' method='POST'>
            $c
            $m
            <button style='margin-left:10px; width: 30px;' type='submit'
                    class='btn btn-xs btn-danger delete'>
                <i class='glyphicon glyphicon-remove-circle'></i>
            </button>
        </form>";
    })

    ->rawColumns(['hapus' => 'hapus','edit'=>'edit','download'=>'download'])

    ->make(true);

}

我希望这可以帮助你。


推荐阅读