Skip to content

2lenet/FileBundle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FileBundle

Validate .github/workflows/test.yml SymfonyInsight

Symfony bundle that standardize the way of handling data file associated with an entity

Installation

The bundle is not yet on packagist make sure to add the following to your composer.json file:

{
    "url": "https://github.com/2lenet/FileBundle",
    "type": "git"
}

Install with composer:

composer require 2lenet/file-bundle

Usage

in your controller or service juste use the fileManager to get the db and absolute path to use to store your data.

        $fileSpec = $this->fileManager->getLocalFilename(
            ENTITY::PDFSTORAGENAME,
            $object,
            "pdf"
        );
  • This function take a first parameter which is the name of the store. Une one store for each field in each entity. It's a good practice to set a constant in the entitiy Class
  • The second parameter is an object ( good to have a getId on it but not required ). Optionnally you can have a getDateForFilename to get the date to use for creating the folders.
  • The third optionnal parameter is the extension to add to the file ( default .bin). Don't set the .

The function return a FileSpec object with two attribute

  • dbPath is the path to use to store in your database ( relative from the projectDir )
  • absPath is the filename to use to write your data ( open it with standard functions )

Path are build this way ( $projectDir / data / $storeName / Y / M / D / $objet->getId() . $ext ) if the folder does not exist it is created with the right right. Y/M/D is the year, month and day from the $object->getDateForFilename() if it exist, instead it use the today date.

        file_put_contents($fileSpec->absPath,$youdata);
        $object->setLocalPdf($fileSpec->dbPath);