Sonata Admin Bundle可点击字段

时间:2015-05-07 15:21:18

标签: mongodb symfony sonata-admin

我将稍微描述一下我的模型的架构来理解我的问题:我正在开发一个Symfony2网络应用程序。

我安装了sonataMongoDB Admin Bundle来创建我的Admin部分。 该应用程序是一个在线Quizzer实际上我有一个文件用户参考了许多文件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() ; 
}

但是我希望Quiz Field变得可点击而不像简单的String那样显示。

1 个答案:

答案 0 :(得分:0)

我认为默认情况下,列表视图不会链接一对多对象。 您可以通过创建自定义模板(就像您对操作所做的那样)来执行此操作,您可以在其中循环查看并链接它们,例如:

{% 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是单个相关对象,则只需要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)),
    ));
}