面包屑上的奏鸣曲管理标签

Posted

技术标签:

【中文标题】面包屑上的奏鸣曲管理标签【英文标题】:sonata admin label on breadcrumb 【发布时间】:2017-05-08 14:20:05 【问题描述】:

我在 Symfony 上的奏鸣曲管理员有一点问题。 我想更改面包屑中的默认管理员标签:

但我找不到任何解决方案。有人可以帮我吗?

我找到了这个功能,但它不起作用。好像没有调用这个函数。

public function buildBreadcrumbs($action, MenuItemInterface $menu = null) 
    $breadCrumb =  parent::buildBreadcrumbs($action, $menu);

    return $breadCrumb;

我使用 Symfony 2.8

【问题讨论】:

如果您只想修改标签的翻译,而不是它们的结构,您可以覆盖SonataAdminBundle::standard_layout.html.twig 模板中的sonata_breadcrumb 块。为label var 输入正确的翻译域,并在其中翻译您的标签。 嗯,我是奏鸣曲的新手,你有例子吗? ps。我不想翻译“列表”但“测试产品”正确的 breacrumb 是仪表板/产品/产品列表或仪表板/产品列表/产品列表 【参考方案1】:

尝试在您的管理类中覆盖 classNameLabel 属性:

// in your ProductAdmin class
public function configure()

    $this->classnameLabel = "Products";

【讨论】:

你不需要在configure方法中有这个,只需将受保护的var添加到你的ProductAdmin类的顶部:protected $classnameLabel = 'Products'; @AndreaG.Pigliafreddo 如果它对你来说是正确的,你应该标记这个答案。 @lopside 谢谢!它更短更漂亮。我认为它会产生更清晰的代码。你应该把它作为一个答案。不过,感谢 Ekonoval 提供的宝贵信息。【参考方案2】:

实现您想要的最简单的方法是更改​​翻译消息。

如果你真的想改变标签,你可以实现自己的标签生成策略。

namespace Blast\CoreBundle\Translator;

use Sonata\AdminBundle\Translator\LabelTranslatorStrategyInterface;

/**
 * Class LibrinfoLabelTranslatorStrategy.
 *
 * Provides a specific label translation strategy for Librinfo.
 * It is based on UnderscoreLabelTranslatorStrategy, but without the context,
 * and labels are prefixed by "librinfo.label."
 *
 * i.e. isValid => librinfo.label.is_valid
 */
class LibrinfoLabelTranslatorStrategy implements LabelTranslatorStrategyInterface

    /**
     * @inheritdoc
     */
    public function getLabel($label, $context = '', $type = '')
    
        $label = str_replace('.', '_', $label);

        return sprintf('%s.%s.%s', "librinfo", $type, strtolower(preg_replace('~(?<=\\w)([A-Z])~', '_$1', $label)));
    

将其定义为服务

blast_core.label.strategy.librinfo:
        class: Blast\CoreBundle\Translator\LibrinfoLabelTranslatorStrategy

然后将它传递给您的管理服务的定义,如下所示:

crm.organism:
        class: Librinfo\CRMBundle\Admin\OrganismAdmin
        arguments: [~, Librinfo\CRMBundle\Entity\Organism, LibrinfoCRMBundle:OrganismAdmin]
        tags:
            -   name: sonata.admin
                manager_type: orm
                group: Customers Relationship Management
                label_translator_strategy: blast_core.label.strategy.librinfo

您将完全控制您的管理员标签

另见:SonataAdmin: replace ID in breadcrumbs

【讨论】:

以上是关于面包屑上的奏鸣曲管理标签的主要内容,如果未能解决你的问题,请参考以下文章

当前页面上的面包屑

若依 vue前端 动态设置路由path不同参数 在页面容器里打开新页面(新路由),面包屑和标签页标题根据参数动态改变,面包屑多级标题,侧边栏对应菜单亮起

php [WooCommerce Core]删除WooCommerce页面上的面包屑(On Woo主题)

php [WooCommerce Core]删除WooCommerce页面上的面包屑(On Woo主题)

php [WooCommerce Core]删除WooCommerce页面上的面包屑(On Woo主题)

前端Vue+Element UI案例:通用后台管理系统-面包屑tag栏