繁体   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