Sonata Admin - 如何设置menu.label属性?

时间:2014-05-07 19:39:28

标签: symfony sonata-admin symfony-sonata

根据Sonata源代码,breadcrumb中的最后一个节点以这种方式呈现:

# standard_layout.html.twig #
<li class="active"><span>{{ menu.label }}</span></li>

在我的设置中,当打开给定的Admin子类时,根据Admin管理的实体,最后一个节点只是变成一个原始字符串:

Dashboard  /  Entity List  /  Acme\SomeBundle\Entity\Stuff:000000001d74ac0a00007ff2930a326f

如何设置menu.label的值以获得更合适的效果?我已经在我的Admin子类中尝试覆盖以下内容:

protected function configureTabMenu(MenuItemInterface $menu, $action, AdminInterface $childAdmin = null) {
    $this->configureSideMenu($menu, $action, $childAdmin);


}

protected function configureSideMenu(MenuItemInterface $menu, $action, AdminInterface $childAdmin = null) {
    $menu->setLabel("Some nice label");
    $menu->setName("Some nice name");
}

但是,即使我已经验证在运行时调用上述方法,这也不会改变任何内容。

3 个答案:

答案 0 :(得分:2)

最后找到了一个很好的(并且有点明显)解决方案。

Sonata Admin类使用内部toString($ object)方法来获取正在处理的实体的标签字符串。因此,关键是要实现相关实体的__toString()方法:

public function __toString() {
    return "test";
}

答案 1 :(得分:1)

最好的方法是在Admin Class中配置$classnameLabel变量:

class fooAdmin extends Admin
{
    protected $classnameLabel = 'Custom Label';
}

但它有相同的问题(实体路径的奇怪名称),即使它在所有其他页面上都正常工作。

答案 2 :(得分:0)

显然,索纳塔解决这个问题的方法在这里显示:

引用:

  

虽然SonataAdminBundle非常友好地通知管理员成功创建,但是类名和某种哈希值并不是很好阅读。这是SonataAdminBundle中对象的默认字符串表示形式。 您可以通过在Admin类中定义toString()(注意:无下划线前缀)方法来更改它。这将接收要转换为字符串的对象作为第一个参数:

来源:https://sonata-project.org/bundles/admin/master/doc/getting_started/the_form_view.html#creating-a-blog-post