CKEditor Field
CommunityA rich text editor field using the non-premium features of CKEditor.
Author:
Kahu Software
Package health
BetaAutomated checks of this plugin's Composer package
13 checks
-
Passed:
Current Laravel version supported
—
Package dependencies resolve together with current Laravel
13.0. -
Passed:
Current PHP version supported
—
Constraint
^8.1supports current PHP8.5. - Skipped: Current Symfony version supported
- Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
- Warning: Commit and release recency — Low activity: last commit 182 days ago; last release 182 days ago.
-
Passed:
composer.lock not committed by library
—
composer.lockis absent from the released dist archive. - Passed: Dist archive is lean
- Failed: GitHub Actions pinned to SHA — View details on Plumb
- Passed: Open security advisories
- Failed: Dependabot PR responsiveness — Stale Dependabot PRs: oldest general PR is 249 days old. View details on Plumb
- Passed: Dependabot or Renovate configured
-
Failed:
Dependency update cooldown configured
—
No cooldown configured in
.github/dependabot.yml. View details on Plumb - Passed: Provides a security policy
filament/
namespace. Review the source and install at your own risk. Found
malware or an unresolved security issue the author won't
address?
Report it
.
Documentation
- Features
- Table of contents
- Installation
- Usage
- Configuration
- Testing
- Changelog
- Contributing
- Security Vulnerabilities
- Credits
- License
Note: This branch (
1.x) is specifically for FilamentPHP 3.x. If you're using FilamentPHP 4.x, please use the2.xbranch.

#Features
- CKEditor 5 integration for FilamentPHP 3 forms
- Image upload support with configurable upload URLs
- Full control over image upload handling - you implement your own upload endpoint
- Highly customizable with fluent API
- Non-premium features only (free and open-source)
- Easy to configure and use
#Table of contents
- Filament CKEditor Field
- Features
- Table of contents
- Installation
- Usage
- Configuration
- Testing
- Changelog
- Contributing
- Security Vulnerabilities
- Credits
- License
#Installation
You can install the field via composer:
composer require kahusoftware/filament-ckeditor-field
You can publish the config file with:
php artisan vendor:publish --tag="filament-ckeditor-field-config"
#Usage
Basic usage:
use Kahusoftware\FilamentCkeditorField\CKEditor;
CKEditor::make('content')
->uploadUrl(null)
#Configuration
This is the contents of the published config file:
return [
/**
* Image upload enabled
*/
'upload_enabled' => true,
/**
* Image URL to upload to if one is not specified on the form field's ->uploadUrl() method
*/
'upload_url' => null,
];
#Available methods
#uploadUrl(string | Closure | null $uploadUrl)
Sets the URL endpoint for image uploads. If not specified, the default upload URL from the config file will be used.
uploadUrl (Default: null)
Note: This field gives you freedom to handle image uploads yourself. You are responsible for creating your own upload endpoint that handles file validation, storage, and returns the appropriate response format. This design allows you to implement your own business logic, security measures, and storage solutions (local filesystem, S3, cloud storage, etc.).
This field uses CKEditor's Custom Upload Adapter, which requires your upload endpoint to return a JSON response containing the uploaded image URL(s).
Expected Response Format:
Your upload endpoint must return a JSON response with one of the following formats:
Single image response:
{
"url": "https://example.com/uploads/image.jpg"
}
Responsive images response:
{
"urls": {
"default": "https://example.com/uploads/image.jpg",
"500": "https://example.com/uploads/image1.jpg",
"1000": "https://example.com/uploads/image2.jpg"
}
}
Example Laravel Controller:
use Illuminate\Http\Request;
public function uploadImage(Request $request)
{
$request->validate([
'upload' => 'required|image|max:2048',
]);
$path = $request->file('upload')->store('uploads', 'public');
$url = asset('storage/' . $path);
return response()->json([
'url' => $url
]);
}
For more details, see the CKEditor Custom Upload Adapter documentation.
#name(string $name)
Sets the name of the field. This will be used as the form field name.
name (Default: 'ckeditor')
#placeholder(string $placeholder)
Sets the placeholder text displayed in the editor when it's empty.
placeholder (Default: 'Type or paste your content here...')
#Testing
composer test
The test suite uses PestPHP and includes unit tests for field instantiation, method chaining, and configuration, as well as feature tests for rendering the field within Livewire components.
#Changelog
Please see CHANGELOG for more information on what has changed recently.
#Contributing
Please see CONTRIBUTING for details.
#Security Vulnerabilities
Please email hello@kahusoftware.com any security vulnerabilities to ensure they're promptly addressed.
#Credits
#License
The MIT License (MIT). Please see License File for more information.
* This open-source plugin is not affiliated with, endorsed, or sponsored by CKSource, and any references to CKEditor are solely for descriptive purposes under their respective copyrights and trademarks.
We do encourage you to check out CKEditor's premium features for your own implementation of CKEditor as the developers have worked hard to bring us a wonderful rich editor.
Featured Plugins
A selection of plugins curated by the Filament team
Custom Dashboards
Let your users build and share their own dashboards with a drag-and-drop interface. Define your data sources in PHP and let them do the rest.
Filament
Advanced Tables (formerly Filter Sets)
Supercharge your tables with powerful features like user-customizable views, quick filters, multi-column sorting, advanced table searching, convenient view management, and more. Compatible with Resource Panel Tables, Relation Managers, Table Widgets, and Table Builder!
Kenneth Sese
Custom Fields
Eliminate custom field migrations forever. Let your users create and manage form fields directly in Filament admin panels with 20+ built-in field types, validation, and zero database changes.
Relaticle