代码

<?php

namespace App\Admin\Controllers\Movies;

use App\Http\Controllers\Controller;
use App\Models\Movie\Top250;
use Encore\Admin\Facades\Admin;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Widgets\Tab;

class Top250Controller extends Controller
{
    ...

    protected function grid()
    {
        return Admin::grid(Top250::class, function (Grid $grid) {

            $grid->title();

            $grid->images()->first()->image();
            $grid->year();
            $grid->rating()->display(function ($rating) {
                return $rating['average'];
            });
            $grid->directors()->pluck('name')->label('primary');

            $grid->casts()->pluck('name')->label();

            $grid->genres()->badge();

            $grid->disableActions();
            $grid->disableBatchDeletion();
            $grid->disableExport();
            $grid->disableCreation();
            $grid->disableFilter();

        });
    }
}

模型

<?php

namespace App\Models\Movie;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\Request;

class Top250 extends Model
{
    public function paginate()
    {
        $perPage = Request::get('per_page', 10);

        $page = Request::get('page', 1);

        $start = ($page-1)*$perPage;

        $data = file_get_contents("https://api.douban.com/v2/movie/top250?start=$start&count=$perPage");

        $data = json_decode($data, true);

        extract($data);

        $movies = static::hydrate($subjects);

        $paginator = new LengthAwarePaginator($movies, $total, $perPage);

        $paginator->setPath(url()->current());

        return $paginator;
    }
}

results matching ""

    No results matching ""