Laravel
本指南介绍了在 Laravel 应用程序中集成 CKBox。如果您想直接跳转到代码,您可以在 GitHub 上找到本指南中描述的 完整应用程序代码。
# 先决条件
在我们开始之前,请确保您已经在系统中安装了 composer
。如果命令行中没有此工具,请先按照 Composer 的安装说明 进行操作。
# 创建应用程序
作为示例的基础,我们将使用 Composer 的 create-project
命令创建一个新的 Laravel 项目
项目创建后,您可以进入目录并启动开发服务器
该应用程序将可通过 http://127.0.0.1:8000 访问。
# 创建控制器
首先,让我们创建一个控制器。该控制器将包含两个操作:一个用于显示示例的 HTML 内容,另一个用于提供令牌 URL,用于在 CKBox 中对用户进行身份验证。
# 令牌 URL
CKBox,与其他 CKEditor 云服务一样,使用 JWT 令牌进行身份验证和授权。所有这些令牌都在您的应用程序端生成,并使用您可以在 CKEditor 生态系统仪表板 中获取的共享密钥进行签名。有关如何创建访问凭据的信息,请参阅 CKEditor 云服务身份验证指南 中的“创建访问凭据”文章。
现在我们有了所需的访问凭据,即:环境 ID 和访问密钥,让我们创建令牌端点。作为基础,我们将使用 PHP 中的通用令牌端点 的代码。
首先,让我们安装 firebase/php-jwt 库来创建 JWT 令牌
作为基础,我们将使用 PHP 中的通用令牌端点 的代码。让我们将 PHP 令牌端点逻辑封装在 Laravel 操作中,并使用 CKBox 所需的负载 生成令牌。
# 完整的控制器代码
如上面的代码清单所示,签名 JWT 令牌所需的访问凭据是从环境变量中获取的。这样一来,您可以方便地将它们添加到 .env
文件中
现在,让我们注册所需的路由
# 将 CKBox 脚本添加到页面
CKBox 可以通过 多种方式 嵌入到应用程序中。为了简单起见,在我们的示例中,我们将使用从 CDN 提供的 CKBox 脚本。
本指南中的示例将涵盖使用 CKBox 的三种常见场景
- 与 CKEditor 集成的 CKBox
- 用作对话框模式的文件选择器的 CKBox
- 用作全页应用程序的 CKBox
为了避免代码重复,让我们准备一个包含 CKBox 脚本的基础 Blade 模板,我们将在所有三个示例中重复使用它
现在,让我们为三个示例添加视图。
# CKBox 与 CKEditor 5
在本示例中,我们将使用运行 CKEditor 5 的最快速便捷方式——从 CDN 提供。对于更高级的集成场景,请参阅 CKEditor 5 文档。
让我们创建扩展我们在上一步中创建的布局的子视图
上面的示例包含一个从 CDN 提供的 预定义的 CKEditor 构建,其中包含所需的 CKBox 插件。然后,CKEditor 被配置为通过设置 ckbox
属性的所需参数来使用 CKBox。请注意,在 ckbox.tokenUrl
配置选项中,我们传递了之前步骤中创建的令牌端点的 URL,该 URL 将用于获取用于在 CKBox 中对用户进行身份验证的 JWT 令牌。
# CKBox 作为文件选择器
常见场景之一是使用 CKBox 作为文件选择器,用户可以在其中选择文件管理器中存储的文件之一。选择文件后,我们希望获取所选文件的相关信息,尤其是它们的 URL。这可以通过使用作为 CKBox 配置选项传递的 assets.onChoose
回调来实现
# 全页模式下的 CKBox
要以全页模式启动 CKBox,您可以将其附加到 document.body
并调整所需的 CSS 样式
# 完整代码
您可以在 GitHub 上找到本指南中描述的 完整应用程序代码。