[英]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 %}
如果測驗是單個相關的對象,則只需要Quizz的另一個管理類並允許show
或edit
規則。 默認情況下,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.