所以我想删除"取消关联" thickbox和"二进制内容"从SonataMediaBundle的形式:
我在谷歌上找不到任何东西。我应该使用Javascript来隐藏它们吗?
答案 0 :(得分: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';
}
}
将其添加为表单扩展服务:
# Bundle config
mynamespace.form.type_extension.media:
class: MyNamespace\AppBundle\Form\Extension\MediaTypeExtension
tags:
-
name: form.type_extension
alias: sonata_media_type
您需要覆盖文件提供程序以更改或删除标签(source):
# 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,
));
}
}
并覆盖应用配置中的参数:
# app/config/config.yml
parameters:
sonata.media.provider.file.class: Application\Sonata\MediaBundle\Provider\FileProvider
答案 1 :(得分:1)
要隐藏取消链接,请在类型:
中的MediaType.php中更改此第63行附近$builder->add('unlink', 'hidden', array(
'mapped' => false,
'data' => false,
'required' => false
));
删除二进制内容,我现在正在搜索...有人有解决方案吗?
最好的问候。
答案 2 :(得分:1)
您可以删除取消链接复选框:
protected function configureFormFields(FormMapper $formMapper)
{
$fileFieldOptions = array(
'provider' => 'sonata.media.provider.file',
'context' => 'default',
'label' => 'File',
'required' => true
);
$formMapper
->add(
'file',
'sonata_media_type',
$fileFieldOptions
);
$formMapper->get('file')->remove('unlink');
}
答案 3 :(得分:1)
在接受的答案中您必须为Symfony添加 extended_type 选项> = 3.1 所以正确的服务注册是:
# Bundle config
mynamespace.form.type_extension.media:
class: MyNamespace\AppBundle\Form\Extension\MediaTypeExtension
tags:
-
name: form.type_extension
extended_type: 'Sonata\MediaBundle\Form\Type\MediaType'
alias: sonata_media_type
答案 4 :(得分:0)
在malberts提供的隐藏/覆盖标签的示例中,记住您可以通过formBuilder getOption方法访问链接表单的当前窗口小部件标签。
public function buildMediaType(FormBuilder $formBuilder)
{
$formBuilder->add('binaryContent', 'file', array(
'label' => $formBuilder->getOption('label'),
));
}
答案 5 :(得分:0)
要有完整的删除元素,请取消链接'来自类型的元素' sonata_media_type'
将例句设置为表格:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add(
'mediaProfil',
'sonata_media_type',
array(
'provider' => 'sonata.media.provider.image',
'context' => 'teams',
'required' => false
)
);
$builder->get('mediaProfil')->remove('unlink');
}
或在控制器内:
public function editProfileAction()
{
/** @var \Symfony\Component\Form\Form $form */
$form = $this->container->get('sonata.user.profile.form');
$form->get('mediaProfil')->remove('unlink');
}
但明确要求元素'取消链接'完成了sonataMedia
PR:https://github.com/sonata-project/SonataMediaBundle/pull/666
或者只是添加到您的形式:
// fix https://github.com/sonata-project/SonataMediaBundle/pull/666
$builder->addEventListener(
FormEvents::PRE_SUBMIT,
function (FormEvent $event) use ($formModifier) {
$event->getForm()->get('mediaProfil')->add('unlink', null, array('mapped' => false,));
}
);
答案 6 :(得分:0)
如果你喜欢从媒体/管理员那里隐藏unlink和二进制内容这对我来说
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('numerocamera')
->add('tipocamera')
->add('media', 'sonata_media_type', array(
'label'=> 'carica immagine 1',
'provider' => 'sonata.media.provider.image',
'context' => 'camere'
))
->add('media1', 'sonata_media_type', array(
'label'=> 'carica immagine 2',
'provider' => 'sonata.media.provider.image',
'context' => 'camere'
))
->add('media2', 'sonata_media_type', array(
'label'=> 'carica immagine 3',
'provider' => 'sonata.media.provider.image',
'context' => 'camere'
))
->add('media3', 'sonata_media_type', array(
'label'=> 'inserisci url video youtube 1',
'provider' => 'sonata.media.provider.youtube',
'context' => 'camere'
))
;
**$formMapper->get('media')->add('unlink', 'hidden', ['mapped' => false, 'data' => false])
->add('binaryContent', 'file', ['label' => false]);
$formMapper->get('media1')->add('unlink', 'hidden', ['mapped' => false, 'data' => false])
->add('binaryContent', 'file', ['label' => false]);
$formMapper->get('media2')->add('unlink', 'hidden', ['mapped' => false, 'data' => false])
->add('binaryContent', 'file', ['label' => false]);
$formMapper->get('media3')->add('unlink', 'hidden', ['mapped' => false, 'data' => false])
->add('binaryContent', 'url', ['label' => false]);
}**