composer require artgris/filemanager-bundle
config/routes.yaml:
artgris_bundle_file_manager:
resource: "@ArtgrisFileManagerBundle/Controller"
type: attribute
prefix: /manager
config/packages/artgris_file_manager.yaml:
artgris_file_manager:
conf:
default:
dir: '%kernel.project_dir%/public/uploads'
config/packages/translation.yaml:
framework:
translator: { fallbacks: ["en"] }
mkdir -p public/uploads
Access the file manager at /manager/?conf=default to upload files, create folders, and manage assets.
Multi-Configuration Management
Define multiple configurations in artgris_file_manager.yaml for different storage needs (e.g., media, documents):
artgris_file_manager:
conf:
media:
dir: '%kernel.project_dir%/public/media'
allow_uploaded_files: ['jpg', 'png', 'gif']
documents:
dir: '%kernel.project_dir%/public/docs'
allow_uploaded_files: ['pdf', 'docx']
Access via /manager/?conf=media.
Integration with CKEditor/TinyMCE Use the provided tutorials to embed the file manager as a button in editors:
Dynamic File URL Generation
Use the artgris_file_manager.url_generator service to generate URLs for uploaded files:
$url = $this->container->get('artgris_file_manager.url_generator')->generateUrl(
'default',
'path/to/file.jpg'
);
Event-Driven Extensions
Subscribe to events (e.g., file.uploaded) to extend functionality:
// config/services.yaml
services:
App\EventListener\FileUploadListener:
tags:
- { name: kernel.event_listener, event: artgris_file_manager.file.uploaded, method: onFileUploaded }
private: true in config to restrict access.artgris_file_manager:
conf:
default:
sanitize_filename: true
show_tree: true.Directory Permissions
Ensure the configured directory (public/uploads) is writable by the web server:
chmod -R 775 public/uploads
Symptom: Uploads fail silently or throw Permission denied errors.
URL Generation Edge Cases
generatePrivateUrl() for private files to avoid 404s.Multilingual Quirks
fallbacks in translation.yaml is misconfigured.en, fr, es, etc.) to ensure UI consistency.File Size Limits
blueimp/jQuery-File-Upload. Override in config:
artgris_file_manager:
conf:
default:
max_file_size: 10M # 10MB
Log Upload Events Enable Symfony’s profiler to inspect file upload events:
framework:
profiler: { only_exceptions: false }
Check the "Events" tab in the profiler for artgris_file_manager.* events.
Check File Paths
Use var_dump() in a custom event listener to debug file paths:
public function onFileUploaded(FileUploadEvent $event) {
var_dump($event->getFile()->getPathname());
}
Clear Cache After Config Changes Run:
php bin/console cache:clear
Symptom: Configuration changes (e.g., allow_uploaded_files) are ignored.
Custom ACLs
Override the Artgris\FileManagerBundle\Security\AccessControl service to implement role-based access:
services:
App\Security\CustomAccessControl:
decorates: artgris_file_manager.access_control
arguments: ['@artgris_file_manager.access_control.inner']
File Validation
Extend the FileValidator service to add custom rules (e.g., virus scanning):
public function validate(File $file) {
if ($file->getMimeType() === 'image/jpeg' && $file->getSize() > 5M) {
throw new \RuntimeException('JPEGs must be <5MB');
}
}
Theming
Override Twig templates in templates/artgris_file_manager/ to customize the UI (e.g., change Bootstrap classes).
File Preview
Extend preview logic for non-image files (e.g., PDFs) by overriding the FilePreviewer service.
# config/packages/dev/artgris_file_manager.yaml
artgris_file_manager:
conf:
dev_media:
dir: '%kernel.project_dir%/public/dev-media'
onFileUploaded/onFileDeleted listeners.show_tree: false in config for large directories to reduce load times.How can I help you explore Laravel packages today?