You need to enable JavaScript to run this app. 修改Sonata Media Bundle后预览标签页消失问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

修改Sonata Media Bundle后预览标签页消失问题咨询

问题原因
  • 表单标签页结构被破坏:你在重写configureFormFields方法时,调用父类方法后额外多执行了一次->end(),父类方法执行完成后已经正确关闭了所有表单分组,多余的end()会打乱表单的层级结构,导致后续定义的preview标签页无法正常渲染。同时你新增language字段时没有指定所属分组,字段直接插入到表单外层也会破坏原有分组逻辑。
  • 标签名称被修改:你在services.yaml中重写Sonata Media Admin服务时,tags配置项的label参数设置为了Seiten(德语“页面”的意思),覆盖了原有的Media标签名称,所以显示为pages/页面。
解决办法

1. 调整MediaAdmin类的表单配置

修改configureFormFields方法,指定新增字段所属的分组,删除多余的end()调用,示例代码如下:

namespace App\Application\Sonata\MediaBundle\Admin\ORM;

use Sonata\AdminBundle\Form\FormMapper;
use Sonata\MediaBundle\Admin\ORM\MediaAdmin as BaseMediaAdmin;

class MediaAdmin extends BaseMediaAdmin
{
    /**
     * {@inheritdoc}
     */
    protected function configureFormFields(FormMapper $formMapper)
    {
        parent::configureFormFields($formMapper);

        $formMapper
            // 指定将language字段添加到media分组中
            ->with('media')
            ->add('language', null, [])
            ->end();
    }
}

如果你希望language字段单独放在新的标签页,直接自定义新的分组即可:

$formMapper
    ->with('自定义标签名')
    ->add('language')
    ->end();

2. 调整services.yaml配置

将服务配置tags中的label参数改为你需要的名称,改回原默认的Media即可恢复原有标签名:

sonata.media.admin.media:
    class: App\Application\Sonata\MediaBundle\Admin\ORM\MediaAdmin
    arguments:
        - ''
        - '%sonata.media.admin.media.entity%'
        - '%sonata.media.admin.media.controller%'
        - '@sonata.media.pool'
        - '@sonata.media.manager.category'
    tags:
        # 修改label为你需要的名称,默认是Media
        - { name: sonata.admin, manager_type: orm, group: admin, label: Media }
    public: true
    calls:
        - [ setModelManager, ["@sonata.media.admin.media.manager"] ]
        - [ setTranslationDomain, ["%sonata.media.admin.media.translation_domain%"] ]
        - [ setTemplates, [ inner_list_row : "@@SonataMedia/MediaAdmin/inner_row_media.html.twig", outer_list_rows_mosaic : "@@SonataMedia/MediaAdmin/list_outer_rows_mosaic.html.twig", base_list_field : "@@SonataAdmin/CRUD/base_list_flat_field.html.twig", list : "@@SonataMedia/MediaAdmin/list.html.twig", edit : "@@SonataMedia/MediaAdmin/edit.html.twig" ] ]

调整完成后清空缓存,即可恢复原有标签页和标签名称,同时保留你新增的language字段。

内容的提问来源于stack exchange,提问作者Mayor of the Plattenbaus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 07:15:04