Kub*_*dev 2 javascript php symfony-sonata sonata-admin sonata-media-bundle
所以我想从SonataMediaBundle的形式中删除"Unlink"厚盒和"二进制内容":

我在谷歌上找不到任何东西.我应该使用Javascript来隐藏它们吗?
我扩展了媒体类型表单,使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)
| 归档时间: |
|
| 查看次数: |
2130 次 |
| 最近记录: |