返回

如何在 Laravel 应用程序中自托管 TinyMCE

vue.js

自托管 TinyMCE:将富文本编辑器集成到 Laravel 应用程序

简介

在现代 Web 开发中,富文本编辑器(WYSIWYG)已成为不可或缺的工具,让用户能够轻松创建和编辑复杂的文本内容。TinyMCE 作为业界领先的 WYSIWYG 编辑器,以其功能强大、易于使用以及高度可定制性而著称。本文旨在指导你将 TinyMCE 无缝集成到你的 Laravel 应用程序中,并将其配置为自托管。

集成 TinyMCE

1. 安装依赖项

首先,使用 Composer 安装 TinyMCE 包:

composer require tinymce/tinymce

2. 配置 TinyMCE

将以下配置添加到 config/app.php

'providers' => [
    // ... 其他提供商
    'TinyMCE\TinyMCE\TinyMCEServiceProvider',
],

然后,在 config/tinymce.php 中添加以下配置:

return [
    'default' => 'cloud',
    'cloud' => [
        'api_key' => env('TINYMCE_API_KEY'),
    ],
    'self_hosted' => [
        'selector' => 'textarea.tinymce',
        'base_url' => '/vendor/tinymce',
        'suffix' => '.min',
    ],
];

3. 使用自托管 TinyMCE

在视图文件中包含以下代码:

@tinymce('self_hosted')
    <textarea name="content" class="tinymce"></textarea>
@endtinymce

这将创建一个自托管 TinyMCE 实例,并将其附加到具有 tinymce 类的所有 <textarea> 标签。

解决“window is not defined”错误

在使用服务器端渲染 (SSR) 模式时,可能会遇到 “window is not defined” 错误。这是因为 TinyMCE 需要在浏览器中运行,而 SSR 是在服务器上执行的。

4. 添加 SSR 支持

webpack.mix.js 文件中添加以下内容:

const fs = require('fs');

mix.js('resources/js/app.js', 'public/js')
    .sourceMaps()
    .version()
    .webpackConfig({
        plugins: [
            new HtmlWebpackPlugin({
                inject: false,
                template: './public/index.html',
            }),
            new WebpackSSR({
                outputFile: 'server.js',
                template: './public/index.html',
                runtime: 'ssr-runtime.js',
            }),
        ],
    })
    .postCss('resources/css/app.css', 'public/css', [
        require('postcss-import'),
        require('postcss-nested'),
        require('postcss-cssnext'),
    ]);

故障排除

  • 确认已正确安装 TinyMCE 依赖项。
  • 检查配置是否正确设置。
  • 确保 Web 服务器配置为提供 TinyMCE 静态文件。
  • 查看 TinyMCE 文档或社区论坛获取帮助。

结论

通过遵循本文中的步骤,你可以成功地将自托管 TinyMCE 集成到你的 Laravel 应用程序中。TinyMCE 的功能和可定制性将提升你创建和编辑文本内容的体验。

常见问题解答

1. 如何自定义 TinyMCE 工具栏?

通过修改 config/tinymce.php 文件中的 config.toolbar 选项来自定义工具栏。

2. TinyMCE 支持哪些语言?

TinyMCE 支持多种语言,包括英语、西班牙语、德语和法语。

3. 我可以将 TinyMCE 与其他 Laravel 包集成吗?

TinyMCE 作为一个独立包提供,可以与其他 Laravel 包兼容。

4. TinyMCE 是否提供图像上传功能?

是的,TinyMCE 集成了图像上传功能,允许用户将图像插入文本。

5. 如何获取 TinyMCE 的最新版本?

通过运行 composer update tinymce/tinymce 来更新 TinyMCE 到最新版本。