webhappens/prismic

Laravel 使用 Prismic.io 的包

v0.8.6 2023-03-08 14:14 UTC

README

tests

Prismic.io 的 Laravel 包装器

此包使您在 Laravel 中使用 Prismic.io 变得超级快速和简单。

  • 面向对象设计
  • 类似 Eloquent 的查询接口
  • 自动将切片和字段渲染为 HTML
  • 自动链接解析
  • 嵌套文档支持
  • 开箱即用的缓存和预览会话
  • 增强型网络钩子(即将推出)

文档

Prismic 中的每个自定义类型都应该在您的项目中有一个相应的文档模型。文档模型使您能够轻松查询您的 Prismic 仓库并围绕内容模型组织代码。

定义文档模型

让我们开始创建一个文档模型。所有文档模型都扩展了 WebHappens\Prismic\Document 类。

文档模型最基本和最根本的属性是其 type 属性。该属性指示文档模型对应于哪个 Prismic 自定义类型

<?php

namespace App;

use WebHappens\Prismic\Document;

class Article extends Document
{
    /**
     * The 'API ID' of the Custom Type associated with the document model.
     *
     * @var string
     */
    protected static $type = 'article';
}

注册文档模型

在文档模型可用之前,必须使用 Prismic::documents() 方法在服务提供器中进行注册。通常这会在您的 App\Providers\AppServiceProvider 类的 register 方法中发生。

use App\Article;
use WebHappens\Prismic\Prismic;

public function register()
{
    Prismic::documents([
        Article::class,
    ]);
}

检索文档

一旦您创建了文档模型及其在 Prismic 中的相关内容,您就可以开始从您的仓库中检索数据。

所有文档

您可以使用 all 方法检索特定类型的所有文档。它们将返回在 Laravel Collection 对象中

// Retrieve all Article Documents
$articles = Article::all();

分块结果

如果您需要处理大量文档,请使用 chunk 命令。该 chunk 方法将检索一个 "块" 的文档模型,将它们传递给一个给定的闭包进行处理。这将有助于在处理大量结果集时节省内存

// Process each Article in chunks of 100
Article::chunk(100, function ($articles) {
    foreach ($articles as $article) {
        //
    }
});

请注意,由于 Prismic API 的限制,最大的块大小为 100。

单个文档

除了检索给定类型的所有文档外,您还可以通过将文档 ID 传递给 find 方法来检索单个记录。此方法返回单个文档实例,而不是 Laravel Collection

// Retrive the Article with an ID of WAjgAygABN3B0a-a
$article = Article::find('WAjgAygABN3B0a-a');

单个类型文档

如果您创建了一个单个类型的文档,例如主页,您可以使用 single 方法来检索文档模型实例,而无需传递文档 ID

// Retrieve a Single Type Document
$homepage = Homepage::single();