Tích hợp TinyMCE và Laravel Filemanager vào dự án Laravel
https://viblo.asia/p/tich-hop-tinymce-va-laravel-filemanager-vao-du-an-laravel-bJzKmP2X59N?fbclid=IwAR026ev-qmDtis79wugHPR9kRJkXYLZrbz6Q64nrthiZDDpUebtYqsALzt8
Last updated
https://viblo.asia/p/tich-hop-tinymce-va-laravel-filemanager-vao-du-an-laravel-bJzKmP2X59N?fbclid=IwAR026ev-qmDtis79wugHPR9kRJkXYLZrbz6Q64nrthiZDDpUebtYqsALzt8
Last updated
unisharp/laravel-filemanagerTinyMCE
Các trang web về quản trị nội dung (CMS) đều nhúng một trình soạn thảo editor, cho phép người dùng làm việc với văn bản, các hiệu ứng như phông chữ, màu sắc, cùng với hình ảnh khiến cho việc soạn thảo văn bản được thuận tiện hơn. Một số trình soạn thảo phổ biến và miễn phí trên internet như tinyMCE, CKeditor, SummerNote... Ở đây trong bài viết này, tôi muốn giới thiệu với bạn về quá trình cài đặt trình soạn thảo tinyMCE. Không chỉ trình soạn thảo, tôi sẽ tích hợp laravel filemanager vào trình soạn thảo tinyMCE cho phép quản lý các file khi upload.
TinyMCE là trình soạn thảo WYSIWYG dựa trên web nguồn mở phổ biến nhất thế giới.
Được hàng triệu nhà phát triển tin cậy và yêu thích và được tích hợp vào hàng nghìn ứng dụng, chẳng hạn như:
Hệ thống quản lý nội dung (CMS)
Hệ thống quản lý học tập (LMS)
Hệ thống quản lý quan hệ khách hàng (CRM) và tự động hóa tiếp thị
Hệ thống tiếp thị qua email
Tạo nội dung trong hệ thống SaaS.
Bước 1: Cài đặt thông qua package manager
Bước 2: Sử dụng webpack mix
Ở đây ta mix file node_modules/tinymce/tinymce.min.js vào chung trong file public/js/app.js và copy các plugins, themes, icons, skins ra ngoài thư mục public để tiny có thể gọi đến.
Bước 3: Tạo view và route
Xử lý file là một trong những quy trình tiêu chuẩn trong hầu hết các dự án web, nhưng không dễ dàng để xây dựng từ đầu: file extensions, uploads, thumbnails, protection.
Các tính năng:
Tích hợp CKEditor và TinyMCE
Kiểm tra dữ liệu updaload.
Cắt và thay đổi kích thước hình ảnh
Thư mục công khai và riêng tư cho nhiều user
Có thể tùy chỉnh routes, middlewares, views, và đường dẫn folder.
Hỗ trợ hai loại : files and images. Mỗi loại hoạt động trong thư mục khác nhau.
Các ngôn ngữ được hỗ trợ : ar, bg, de, el, en, es, fa, fr, it, he, hu, nl, pl, pt-BR, pt_PT, ro, ru, sv, tr, zh-CN, zh-TW.
Yêu cầu:
php >= 5.4
exif extension
fileinfo extension
GD Library >=2.0 or Imagick PHP extension >=6.5.7
Laravel 5
Tiến hành cài đặt
Bước 1: Cài đặt package unisharp/laravel-filemanager
bằng composer
Bước 2: Đưa các config và assets của package ra ngoài
Bước 3: Clear cache
Bước 4: Sysmlink tài nguyên từ storage ra ngoài public để laravel filemanager có thể truy cập đến
Bước 5: Tạo các route cần thiết cho laravel filemanager
Thử vào trang demo nào {BASE_URL}/laravel-filemanager/demo
Một số cấu hình cần lưu ý:
paginator
: Hiển thị số lượng mỗi trang.
disk
: Nơi lưu trữ ảnh (với giá trị public
: Sẽ lưu dưới local, s3
: Sẽ lưu trữ trên cloud dựa vào config trong filemanager.php)
should_validate_size
: validate file upload.
should_validate_mime
: validate minetype.
raster_mimetypes
: Định nghĩa minetype được upload.
Các config còn lại các bạn có thể tự tìm hiểu...
Tinymce cũng có công cụ quản lý file mạnh mẽ là https://www.tiny.cloud/drive nhưng muốn sử dụng chức năng này thì phải tra phí và nó sẽ lưu trên server của nó mình không quản lý được. Vậy nên laravel filemanager là một lựa chọn không tệ để quản lý file.
Bước 1: Sử dụng plugins image, imagetool và toolbar image
Cấu hình tinymce sẽ như sau:
Bước 2: Sử dụng function file_picker_callback(callback, value, meta)
để custom lại dialog chọn image file click vào biểu tượng upload
callback
: Một callback được gọi, khi bạn có tệp nó mong đợi giá trị mới cho trường làm đối số đầu tiên và tùy chọn thông tin meta cho các trường khác trong dialog làm đối số thứ hai.
value
: Giá trị hiện tại của trường bị tác động.
meta
: Đối tượng chứa giá trị của các trường khác trong dialog được chỉ định.
Tiny chỉ cung cấp cho cung ta cái hook, còn việc triển khai như thế nào thì mình lại tự code.
Đầu tiên file_picker_callback
sẽ lấy with, hieght của màn hình hiện tại, để tính toán kích thước của dialog khi upload.
Tiếp theo sẽ kiểm tra file type và sinh ra một url.
Open một dialog cho phép chọn ảnh.
url
: Giá trị vừa được sinh ra ở trên.
title
: Tiêu đề của dialog.
width
: Chiều rộng của dialog.
height
: Chiều cao của dialog.
onMessage
: Khi chọn ảnh trong filemanager xong thì sẽ trả về link ảnh cho dialog của tinymce.
Giao diện của tinymce sau khi tích hợp vào textarea.
Bây giờ thử demo một chút.