7. Form Type

7.1. Media Type

The sonata_media_type widget

The sonata_media_type widget

The sonata_media_type can be used to assign a Media instance to another entity. There are required parameters:

provider

sonata.media.provider.youtube, sonata.media.provider.image, etc …

context

the context to use

And optionals parameters:

empty_on_new

(default is true): the related data transformer will return null instead of an empty Media instance if no binary content is provided.

new_on_update

(default is true): create a new media instance if a binary content is set. If the value is set to false, then the media will be overwritten and related entities can be affected by this change.

The following example shows how to use them:

$post = new Post();

// create the form
$builder = $this->createFormBuilder($post);
$builder->add('media', 'sonata_media_type', [
     'provider' => 'sonata.media.provider.youtube',
     'context'  => 'default',
]);

$form = $builder->getForm();

// bind and transform the media's binary content into real content
if ($request->getMethod() == 'POST')
{
    $form->bindRequest($request);

    // do stuff ...
}

You also need to add a new form theme template to twig configuration:

# config/packages/twig.yaml

twig:
    debug: '%kernel.debug%'
    strict_variables: '%kernel.debug%'

    form_themes:
        - '@SonataMedia/Form/media_widgets.html.twig'