界面

代码

<?php

namespace App\Admin\Controllers\Movies;

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

class InTheaterController extends Controller
{
    ...

    protected function grid()
    {
        return Admin::grid(InTheater::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();
        });
    }

    protected function form()
    {
        return Admin::form(InTheater::class, function (Form $form) {

            $form->display('id', 'ID');

            $form->text('title')->rules('required');
            $form->text('original_title');
            $form->textarea('summary');
            $form->url('alt');
            $form->url('mobile_url');
            $form->url('share_url');
            $form->tags('countries');
            $form->tags('genres');
            $form->tags('aka');

            $form->year('year');

        });
    }
}

模型

<?php

namespace App\Models\Movie;

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

class InTheater 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/in_theaters?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;
    }

    public static function with($relations)
    {
        return new static;
    }

    public function findOrFail($id)
    {
        $data = file_get_contents("http://api.douban.com/v2/movie/subject/$id");

        $data = json_decode($data, true);

        return static::newFromBuilder($data);
    }

    public function save(array $options = [])
    {
        dd($this->getAttributes());
    }
}

results matching ""

    No results matching ""