代码
<?php
namespace App\Admin\Controllers\Movies;
use App\Http\Controllers\Controller;
use App\Models\Movie\ComingSoon;
use Encore\Admin\Facades\Admin;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Widgets\Tab;
class ComingSoonController extends Controller
{
...
protected function grid()
{
return Admin::grid(ComingSoon::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 ComingSoon 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/coming_soon?city=上海&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;
}
}