SonataMediaBundle:一种删除unlink thickbox的方法

Kub*_*dev 2 javascript php symfony-sonata sonata-admin sonata-media-bundle

所以我想从SonataMediaBundle的形式中删除"Unlink"厚盒和"二进制内容":

在此输入图像描述

我在谷歌上找不到任何东西.我应该使用Javascript来隐藏它们吗?

mal*_*rts 9

取消链接

我扩展了媒体类型表单,使unlink复选框可选(基于abadius的答案):

# src/MyNamespace/AppBundle/Form/Extension/MediaTypeExtension.php

namespace MyNamespace\AppBundle\Form\Extension;

use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\FormBuilderInterface;

class MediaTypeExtension extends AbstractTypeExtension
{
    /**
     * {@inheritdoc}
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'show_unlink' => true,
        ));
    }

    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        if (!$options['show_unlink']) {
            $builder->add('unlink', 'hidden', array(
                'mapped'   => false,
                'data'     => false,
                'required' => false,
            ));
        }
    }

    /**
     * {@inheritdoc}
     */
    public function getExtendedType()
    {
        return 'sonata_media_type';
    }
}
Run Code Online (Sandbox Code Playgroud)

将其添加为表单扩展服务:

# Bundle config

mynamespace.form.type_extension.media:
    class: MyNamespace\AppBundle\Form\Extension\MediaTypeExtension
    tags:
        -
            name: form.type_extension
            alias: sonata_media_type
Run Code Online (Sandbox Code Playgroud)

二进制内容

在这里,您需要覆盖文件提供程序以更改或删除标签():

# src/Application/Sonata/MediaBundle/Provider/FileProvider.php

namespace Application\Sonata\MediaBundle\Provider;

use Sonata\MediaBundle\Provider\FileProvider as BaseFileProvider;
use Symfony\Component\Form\FormBuilder;

class FileProvider extends BaseFileProvider
{
    /**
     * {@inheritdoc}
     */
    public function buildMediaType(FormBuilder $formBuilder)
    {
        $formBuilder->add('binaryContent', 'file', array(
            'label' => false,
        ));
    }
}
Run Code Online (Sandbox Code Playgroud)

并覆盖应用配置中的参数:

# app/config/config.yml

parameters:
    sonata.media.provider.file.class: Application\Sonata\MediaBundle\Provider\FileProvider
Run Code Online (Sandbox Code Playgroud)