Download the PHP package app-verk/google-cloud-storage-media-bundle without Composer
On this page you can find all versions of the php package app-verk/google-cloud-storage-media-bundle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download app-verk/google-cloud-storage-media-bundle
More information about app-verk/google-cloud-storage-media-bundle
Files in app-verk/google-cloud-storage-media-bundle
Package google-cloud-storage-media-bundle
Short Description AppVerk media bundle uploading into Google Cloud Storage
License MIT
Informations about the package google-cloud-storage-media-bundle
GoogleCloudStorageMediaBundle
Symfony Media Bundle. The bundle allow in easy way upload files. The bundle required to working dropzone.js script.
Configure
Require the bundle with composer:
$ composer require app-verk/google-cloud-storage-media-bundle
Enable the bundle in the kernel:
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new AppVerk\GoogleCloudStorageMediaBundle\GoogleCloudStorageMediaBundle(),
// ...
);
}
Create your Media class:
<?php
namespace AppBundle\Entity;
use AppVerk\GoogleCloudStorageMediaBundle\Entity\Media as BaseMedia;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity()
*/
class Media extends BaseMedia
{
}
Add to config.yml:
twig:
form:
resources:
- 'GoogleCloudStorageMediaBundle:form:fields.html.twig'
google_cloud_storage_media:
namer: "AppVerk\\GoogleCloudStorageMediaBundle\\Namer\\DefaultNamer"
filesystem: "default.storage"
filesystem_url_retriever: 'AppVerk\GoogleCloudStorageMediaBundle\Flysystem\Retriever\LocalObjectUrlRetriever'
entities:
media_class: AppBundle\Entity\Media
gcs:
project_id: 123
bucket_id: my_bucket
key_file_path: "default"
allowed_mime_types: ["image/jpeg", "image/jpg", "image/png", "image/gif", "application/pdf"]
Add to routing.yml:
media:
resource: '@GoogleCloudStorageMediaBundle/Controller/'
type: annotation
Add these libs into your admin panel:
<!--css -->
<link rel="stylesheet" href="{{ asset('bundles/media/css/dropzone.min.css') }}" />
<!-- js -->
<script src="{{ asset('bundles/media/js/dropzone.min.js') }}"></script>
Update your database schema:
$ php app/console doctrine:schema:update --force
Media Form Type
<?php
use Symfony\Component\Form\AbstractType;
use AppVerk\GoogleCloudStorageMediaBundle\Form\Type\MediaType;
use Symfony\Component\Form\FormBuilderInterface;
class Post extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$formMapper
->add('image', MediaType::class)
;
}
}
Twig helper
Render a media:
<img src="{{ post.media|media }}" />
Group of validation
Bundle allow to validation every single used MediaType in different way. For example you want to allow only PDF files:
You need to add group into config.yml:
media:
entities:
media_class: AppBundle\Entity\Media
allowed_mime_types: ["image/png", "image/gif"]
max_file_size: 15000000
groups:
lorem:
allowed_mime_types: ["application/pdf"]
max_file_size: 560000
Set group in MediaType:
$formMapper->add('image', MediaType::class, [
'group' => 'lorem'
]);
Using new StorageService and flysystem layer
In order to use the new AppVerk\GoogleCloudStorageMediaBundle\Service\v2\StorageService
you have to:
Configure flysystem correctly (example):
config/packages/flysystem.yaml
config/services/storage.yaml
Then, configure media bundle accordingly config/packages/google_cloud_storage_media.yaml
License
The bundle is released under the MIT License.
All versions of google-cloud-storage-media-bundle with dependencies
app-verk/components Version ^2.0 || dev-master
league/flysystem-bundle Version ^3.3
google/cloud-storage Version *
symfony/framework-bundle Version ^6.4
symfony/event-dispatcher Version ^6.4
symfony/http-kernel Version ^6.4
symfony/http-foundation Version ^6.4
symfony/translation Version ^6.4
symfony/form Version ^6.4
stof/doctrine-extensions-bundle Version *
symfony/twig-bundle Version ^6.4
doctrine/orm Version *
symfony/orm-pack Version *