2014-05-07 3 views
2

Selon le code source Sonata, le dernier nœud dans le fil d'Ariane est rendu ainsi:Sonata Admin - comment définir l'attribut menu.label?

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

Dans ma configuration, lors de l'ouverture d'une sous-classe Administrateur donnée, le dernier nœud devient simplement une chaîne brute selon l'entité géré par l'administrateur:

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

Comment puis-je définir la valeur de menu.label pour obtenir quelque chose de plus approprié? Je l'ai essayé, dans mon sous-classe Admin, pour remplacer les éléments suivants:

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"); 
} 

Toutefois, cela ne change rien, même si je l'ai vérifié que les méthodes ci-dessus sont appelés au cours de l'exécution.

Répondre

2

Enfin trouvé une bonne solution (et quelque peu évidente) à cela.

La classe Sonata Admin utilise une méthode interne toString ($ object) afin d'obtenir une chaîne d'étiquette pour l'entité qu'elle gère. Ainsi, la clé est de mettre en œuvre la méthode __toString() de l'entité en question:

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

La meilleure façon est de configurer la variable $classnameLabel dans la classe Admin:

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

Mais il a le même problème (nom bizarre avec le chemin d'entité) le faisant, même si cela fonctionne bien sur toutes les autres pages.

0

Apparemment, la façon dont Sonata de résoudre c'est montrer ici:

Quote:

Bien qu'il soit très sympathique du SonataAdminBundle d'informer l'administrateur d'une création réussie, le nom de classe et une sorte de hash ne sont pas vraiment agréable à lire. C'est la représentation de chaîne par défaut d'un objet dans SonataAdminBundle. Vous pouvez le modifier en définissant une méthode toString() (remarque: pas de préfixe de soulignement) dans la classe Admin. Reçoit l'objet de transformer en une chaîne comme premier paramètre:

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

Questions connexes