Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filemanager Bundle Laravel Package

zicht/filemanager-bundle

A Symfony bundle that adds a full-featured file manager to your application, offering a browsable directory tree, uploads and downloads, rename, delete, and move operations, plus configurable storage and access control for managing media and assets.

View on GitHub
Deep Wiki
Context7

Getting Started

Before anything else: this is a Symfony bundle, not a Laravel package. The Bundle suffix, the zicht/* vendor namespace, and the absence of any ServiceProvider/Facade scaffolding mean it will not install cleanly into a Laravel app and cannot be used through the normal composer require + auto-discovery flow. If you are committing to a Laravel codebase, you are signing up to bridge Symfony's kernel, container, and event system yourself — usually not worth it for a file manager.

Assuming you are actually on Symfony (or evaluating a hybrid stack):

  1. Read the repo before installing. With no stars, no dependents, and no description, the README and composer.json are your only sources of truth. Check:
    • The required PHP and Symfony versions in composer.json (an unmaintained bundle often pins to Symfony 3/4/5).
    • The DependencyInjection/ folder for the extension class and any Configuration.php (this tells you the exact config tree key).
    • Whether there is a Resources/config/services.* file (XML/YAML/PHP) — that is where the real wiring lives.
  2. Register the bundle in config/bundles.php (or AppKernel::registerBundles() on older Symfony), then add its config block under config/packages/<bundle_key>.yaml.
  3. Find the extension key first. The YAML root key is almost never the composer package name — inspect the Configuration::getRootNode() or the extension alias, otherwise Symfony will silently ignore your config.
  4. First real use case: wire the bundle's file-entity/manager service into one controller, upload a single file, persist it, and render it back. If you cannot get that working end-to-end from the README alone, treat that as a signal about the bundle's maintenance state.

Implementation Patterns

Typical workflows for a Zicht-style file manager bundle:

  • Entity-centric files. These bundles usually ship (or expect you to generate) a File entity with metadata: filename, original name, mime type, size, and often a title/alt field for editorial use. You usually extend an abstract base class rather than using a shipped entity directly, so that your Entity/ folder owns the mapping.
  • Manager service injection. Prefer injecting the bundle's manager service (e.g. zicht_file_manager.manager — confirm the real id in services.xml) over calling the entity directly. The manager typically wraps upload, move, delete, and filesystem access, and is the seam you would swap out later.
  • Form integration. File manager bundles almost always ship a form type for uploading. Look under Form/Type/ and register your own form type that composes it, so you control validation groups and required/optional behaviour without touching vendor code.
  • Templating. If the bundle provides Twig helpers or a file-picker widget, isolate them behind your own partial. That gives you a single place to patch if the bundle's templates break on a newer Twig.
  • Filesystem abstraction. Confirm whether the bundle uses Flysystem, Gaufrette, or raw PHP filesystem calls. If it's raw calls, wrap it in your own storage service immediately — you will want S3 or a CDN later and the bundle may not support it.
  • Bridging to Laravel (if you must). Do not attempt to boot the whole Symfony kernel. Port the entity mapping to Eloquent, copy the manager logic, and reimplement the storage/upload layer. The bundle's value is its data model and workflow, not its container wiring.

Gotchas and Tips

  • Framework mismatch is the headline gotcha. Laravel's container, config, and event systems are not compatible with Symfony bundles. There is no mergeConfigFrom equivalent, no auto-discovery, and middleware/kernel bootstrapping differs entirely.
  • Silent config failures. Symfony bundles ignore unknown config keys. If your uploads are going to the wrong directory or the file table isn't being written, verify the root key matches the extension alias precisely.
  • Service ID drift. Service names are not part of the public API. Read Resources/config/services.xml (or .yaml) and copy the exact IDs — do not guess from the package name.
  • Unmaintained dependency risk. Zero dependents and no description usually means internal-only or abandoned code. Check the last commit date and whether the pinned Symfony version is still supported. If it targets Symfony 4/5, expect friction on Symfony 6/7.
  • Doctrine coupling. Expect Doctrine\ORM annotations/attributes and possibly inheritance mappings. If your app uses a different ORM or a non-standard entity naming strategy, the shipped mappings may fight you.
  • Extension points are your safety net. Look for interfaces (FileManagerInterface, storage adapters) rather than extending concrete classes — you will likely need to override behaviour, and the concrete classes may be final or tightly coupled.
  • Test isolation. File manager bundles often write to the real filesystem. Point tests at a temp directory via the config tree and clean up in tearDown; never let them touch public/uploads.
  • Debugging tip. Run bin/console debug:container | grep -i file to discover the actual service IDs the bundle registered — this is faster than reading the XML and catches typos in your config.
  • If the README is insufficient, do not sink hours reverse-engineering it. Given the package's metrics, a purpose-built Laravel file manager (e.g. Flysystem + a small Eloquent model) is almost certainly cheaper to build and maintain than porting this one.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons