daddl3/symfony-ckeditor-5-webpack
Container with Laravel’s ServiceProvider or Package structure).laravel-vite-plugin) can host CKEditor5 bundles directly, bypassing Symfony’s asset pipeline. Feasibility: High.{{ asset() }} and {% block %} patterns, but custom Twig extensions (e.g., for editor configuration) may need Laravel equivalents (e.g., Blade directives or PHP classes).Storage facade or Flysystem can replace Symfony’s Filesystem, but authentication/authorization (e.g., CSRF, middleware) must align.Entity or Doctrine model. Laravel’s Eloquent can mirror this with minimal changes.Illuminate\Contracts\Container or Str helpers).POST /api/ckeditor/save).Route::apiResource for file uploads/config fetches.ckeditor5-laravel (Laravel-native).content field).webpack.config.js with Laravel’s Vite setup.// vite.config.js
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import CKEditor5 from 'vite-plugin-ckeditor5';
export default defineConfig({
plugins: [
laravel({
input: ['resources/js/app.js'],
refresh: true,
}),
CKEditor5({
// Customize CKEditor5 plugins/themes here
theme: 'balloon',
plugins: ['Essentials', 'Paragraph', 'Heading'],
}),
],
});
page.props to pass editor config from Laravel.Phase 1: Frontend Isolation (Low Risk)
npm install @ckeditor/ckeditor5-build-classic
<!-- resources/views/editor.blade.php -->
<div id="editor">
@vite(['resources/js/ckeditor.js'])
</div>
Phase 2: Backend Integration (Medium Risk)
Route::post('/ckeditor/upload', [EditorController::class, 'upload'])->middleware('auth');
Storage facade to handle file uploads (replace Symfony’s Filesystem).public function upload(Request $request) {
$file = $request->file('upload');
$path = $file->store('ckeditor');
return response()->json(['uploaded' => 1, 'url' => Storage::url($path)]);
}
Phase 3: Full Bundle Replacement (High Risk)
Container with Laravel’s app() helper.// Laravel Service Provider (replaces Symfony Bundle)
public function register() {
$this->app->singleton(CKEditorConfig::class, function () {
return new CKEditorConfig(config('ckeditor'));
});
}
| Component | Symfony Implementation | Laravel Equivalent | Compatibility Risk |
|---|---|---|---|
| Dependency Injection | Symfony’s Container |
Laravel’s ServiceProvider/app() |
Medium (rewrite DI) |
| Asset Management | Webpack Encore | Vite/Laravel Mix | Low (config swap) |
| Templating | Twig | Blade | Medium (asset tags) |
| File Uploads | Symfony’s Filesystem |
Laravel Storage facade |
Low |
| Routing | Symfony’s Router |
Laravel’s Route |
Low |
| Authentication | Symfony’s Security Component | Laravel’s Middleware/Gate | Medium (auth logic) |
@directive).dump() → Laravel’s dd() or Log::debug().@error directives.How can I help you explore Laravel packages today?