簡體   English   中英

Sonata管理員捆綁包可點擊字段

[英]Sonata Admin Bundle clickable Field

我將描述一些模型的體系結構以了解我的問題:我正在開發一個Symfony2網絡應用程序。

然后,我安裝了sonataMongoDB Admin Bundle來創建我的Admin部件。 該應用程序是在線Quizzer,實際上我有一個文檔User,其中引用了許多Quizz文檔。 當我顯示用戶列表時,我需要測驗字段可單擊以進入測驗並查看結果。

這是ConfigureListFields函數的代碼:

    protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
    ->addIdentifier('email')
    ->add('firstName')
    ->add('lastName')
    ->add('quizz', null, array('label' => 'Quiz Passd : Result'))

    ->add('_action', 'actions', array(
        'actions' => array(
            'inscription' => array('template' => 'ATSAdminBundle:CRUD:list__action_inscription.html.twig'),
            'edit' => array(),
            )
        ))
    ;
}

這里是我如何獲得測驗對象的方法:

  public function __toString() 
{
    return $this->getResult() ; 
}

但我希望測驗字段變得可單擊,而不像簡單的字符串一樣顯示。

我認為默認情況下,列表視圖不會鏈接一對多對象。 您可以通過創建自定義模板(就像執行操作一樣)來實現此目的,在該模板中,您可以循環瀏覽測驗並鏈接它們,例如:

{% block field %}
<div>
    {% foreach object.quizzes as quizz %}
    ....
    {% foreach %}
</div>
{% endblock %}

參見https://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/list_field_definition.html#custom-template

如果測驗是單個相關的對象,則只需要Quizz的另一個管理類並允許showedit規則。 默認情況下,Sonata將鏈接到edit規則。 因此,如果您沒有編輯Quizz的角色,則不會鏈接任何內容。 也許那是您的主要問題。

如果是這種情況,請嘗試以下代碼進行驗證:

->add('quizz', null, array('label' => 'Quiz Passd : Result', 'route' => 'show'))

最后但並非最不重要的一點是,更常見的是在父對象的show視圖內鏈接以show路線。 然后,您可以在標簽菜單中添加您的Quizz:

protected function configureTabMenu(MenuItemInterface $menu, $action, AdminInterface $childAdmin = null)
{
    $menu->addChild($this->trans('Quizzes'), array(
        'uri' => $admin->generateUrl('sonata.admin.quizz.list', array('id' => $id)),
    ));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM