robindrost/prismic-integration-field-laravel

一个允许您将模型或模型集合转换为Prismic集成字段数组的包。

1.3 2021-03-14 18:26 UTC

This package is auto-updated.

Last update: 2024-09-15 02:16:57 UTC


README

本包允许您使用Eloquent模型作为Prismic集成字段。您必须实现一个接口并有一个选项在您的模型上使用该特性。

该包还提供了一个中间件,用于验证来自Prismic的访问令牌。

安装

composer require robindrost/prismic-integration-field-laravel

用法

您可以通过两种方式在模型上使用集成字段的实现。

  1. 您指定集成字段所需的数据库中的字段。
  2. 或定义属性访问器方法,如getImageUrlAttribute()

模型实现示例

请注意,这里我只是将选项1和2混合使用,仅作为示例。

use RobinDrost\PrismicIntegrationField\IntegrationField;
use RobinDrost\PrismicIntegrationField\Contracts\IntegrationField as IntegrationFieldContract;

class MyModel extends Model implements ModelToIntegrationField
{
    // Using existing database fields
    public $fillable = [
        'id',
        'title',
        'description',
    ];

    // Using a getter method
    public function getImageUrlAttribute()
    {
        return 'https://via.placeholder.com/350x150';
    }

    // Convert this model to an integration field.
    public function toIntegrationField() : IntegrationFieldContract
    {
        IntegrationField::create()
            ->setId($this->id)
            ->setTitle($this->title)
            ->setDescription($this->description)
            ->setImageUrl($this->image_url)
            ->setUpdatedAt($this->updated_at->timestamp)
            ->setBlob([
                'id' => $this->id,
            ]);
    }
}

集合实现

// Override Laravels newCollectiom method:
class MyModel extends Model implements ModelToIntegrationField
{
    ...

    public function newCollection(array $models)
    {
        return new IntegrationFieldCollection($models);
    }
}

// Usage in your controller:
class MyController extends Controller
{
    public function myApiMethodCallback()
    {
        $models = MyModel::paginate(50);

        return response()->json([
            'results_size' => $models->total(),
            'results' => $models->getCollection()->toArray(),
        ]);
    }
}

就这么多。现在Prismic可以处理您的集合返回的数组。

处理访问令牌

该包还提供了一个简单的方式来保护带有访问令牌的路由。Prismic允许您为每个集成字段定义访问令牌。这些访问令牌需要在配置文件中定义,并由本包提供的中间件使用。

  1. 首先将配置文件发布到您的配置文件夹。
php artisan vendor:publish

并选择此包的服务提供者。

  1. 现在在添加的配置文件中添加访问令牌。这只是一个字符串数组。

在您的路由上应用中间件

  1. 将中间件添加到app/Http/Kernel.php
protected $routeMiddleware = [

....
'prismic.verify.access.token' => \RobinDrost\PrismicIntegrationField\Http\Middleware\VerifyAccessToken::class,

];
  1. 在api路由上应用中间件
Route::middleware('prismic.verify.access.token')->get('/your-path', 'YourController@index');

现在只有允许的访问令牌才能到达控制器。