netliva/medialib

Netliva Media Library

Installs: 22

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 3

Forks: 0

Open Issues: 0

Language:JavaScript

v0.2.0 2021-01-31 20:31 UTC

This package is auto-updated.

Last update: 2024-09-29 04:31:33 UTC


README

This package adds media library functionality to Symfony Form

Installation

Applications that use Symfony Flex

Open a command console, enter your project directory and execute:

$ composer require netliva/medialib

Applications that don't use Symfony Flex

Step 1: Download the Bundle

Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:

$ composer require netliva/medialib

This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.

Step 2: Enable the Bundle

Then, enable the bundle by adding it to the list of registered bundles in the app/AppKernel.php file of your project:

NetlivaFileTypeBundle has been installed as a dependency of NetlivaMediaLibBundle. If you have not installed NetlivaFileTypeBundle before, you must enable it because of the dependency.

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Netliva\MediaLibBundle\NetlivaMediaLibBundle(),
            new Netliva\FileTypeBundle\NetlivaFileTypeBundle(),
        );

        // ...
    }

    // ...
}

Step 3: Update Database Schema

php bin/console doctrine:schema:update --force

Include Assets to Your Project

Install assets

Install assets as shown below

$ php bin/console assets:install

This command will create asset files in folders which; (Symfony >= 4.0) public/bundles/netlivamedialib (Symfony >= 3.3) web/bundles/netlivamedialib .

Include files which created by assets command, into your project:

<link href="{{ asset('bundles/netlivamedialib/nmlb.css' }}" rel="stylesheet" type="text/css">
<script src="{{ asset('bundles/netlivamedialib/nmlb.js' }}"></script>

or using webpack encore;

// assets/js/app.js
require('../../public/bundles/netlivamedialib/nmlb.css');
require('../../public/bundles/netlivamedialib/nmlb.js');

Localization

To using MediaLib with different languages, include the js file to your project under
bundles/netlivamedialib/localize.

For Example;

<script src="{{ asset('bundles/netlivamedialib/localize/tr.js' }}"></script>

Configurations

Routes Definations

netliva_file_route:
  resource: .
  type: netliva_file_route

Config Definations

You can configure your upload folder or your download uri as shown below. This settings are optional and default values are shown below.

# Symfony >= 4.0. Create a dedicated netliva_config.yaml in config/packages with:
# Symfony >= 3.3. Add in your app/config/config.yml:

netliva_file_type:
    file_config:
        upload_dir: public/netliva_uploads
        download_uri: /uploads
  • upload_dir: This options sets where your files will be uploaded starts from project root directory.
  • download_uri: This option sets a virtual folder name where your folders will be downloaded from. If there is a folder with this name in your project root directory, it would cause error

Basic Usage

Firstly add a field as json_array type in your entity. Then simply add MediaLibType to your form with this field.

<?php
//...
public function buildForm (FormBuilderInterface $formBuilder, array $options)
{
	//...
	$formBuilder->add('images', MediaLibType::class, [ 'label' => 'Images', 'button_text'=>"select file", 'multiple'=>"true"]);
	//...
}
//...
?>

with Multiple true you can select multiple files, or with false it allows you to select one file only.

Use inserted datas to field

If your data is multiple uploaded

get_nl_mfolder() twig function will return folder information from field. You can use nl_file_uri twig filter to get file path from field.

{% for image in get_nl_mfolder(entity.images).files %}
    <img src="{{ image|nl_file_uri }}" />
{% endfor %}

If your data is single file uploaded

get_nl_mfile() twig function will return file information from field. You can use nl_file_uri twig filter to get file path from field.

<img src="{{ get_nl_mfile(entity.image)|nl_file_uri }}" />