gpt4 book ai didi

symfony - 奏鸣曲/交响曲-父/子结构设置

转载 作者:行者123 更新时间:2023-12-04 16:39:27 25 4
gpt4 key购买 nike

我已经要求了一段时间了。不敢相信没有一个开发人员不知道答案,我有点绝望

在Sonata中,我无法使url结构/模式/parent/ID/child/list起作用。通过了非常非常差的4.6。奏鸣曲文档中的CREATE CHILD ADMINS部分,仅在网上找到了一些示例,我无法使其正常运行

有人可以逐步解释如何设置这种结构吗?

最佳答案

我将在解释中使用Sonata提供的示例,这是一个基本的Post/Comment关系。

您的实体Post(父项)和Comment(子项)之间必须具有父/子链接(oneTomany/manyToOne关系)。

您必须在服务声明中添加针对子管理服务的参数addChild:

services.yml

sonata.news.admin.comment:
class: Sonata\NewsBundle\Admin\CommentAdmin
arguments: [~, Sonata\NewsBundle\Model\Comment, SonataNewsBundle:CommentAdmin]
tags:
- {name: sonata.admin, manager_type: orm, group: "Content"}
sonata.news.admin.post:
class: Sonata\NewsBundle\Admin\PostAdmin
arguments: [~, Sonata\NewsBundle\Model\Post, SonataNewsBundle:PostAdmin]
tags:
- {name: sonata.admin, manager_type: orm, group: "Content"}
calls:
- [addChild, ['@sonata.news.admin.comment']]

在CommentAdmin类中,您需要添加propertyAssociationMapping以按父级过滤此子级。

评论管理员
class CommentAdmin extends Admin
{
protected $parentAssociationMapping = 'post';
...
}

然后,您将有一个新的路由:/parent/ID/child/list,您可以使用控制台找出新路由的标识符(php app/控制台路由器:调试)。如果您想以一种简单的方式在管理员中访问它,我建议在父管理员列表中添加一个按钮以直接访问其子注释:

创建一个模板,该模板添加一个按钮来访问 child 的评论:

post_comments.html.twig
<a class="btn btn-sm btn-default" href="{{ path('OUR_NEW_CHILD_ROUTE_ID', {'id': object.id }) }}">Comments</a>

然后在本例中的PostAdmin中,将按钮操作添加到父级Admin中:

邮政管理员
class PostAdmin extends Admin
{
protected function configureListFields(ListMapper $listMapper)
{
$listMapper->add('_action', 'actions', array(
'actions' => array(
'show' => array(),
'edit' => array(),
'comments' => array('template' => 'PATH_TWIG')
)
))
}
}

希望您学到了更多有关如何设置 parent / child 管理员的知识。

关于symfony - 奏鸣曲/交响曲-父/子结构设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26745512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com