在块中渲染奏鸣曲管理员列表

Posted

技术标签:

【中文标题】在块中渲染奏鸣曲管理员列表【英文标题】:Render Sonata admin list in block 【发布时间】:2020-08-12 07:35:07 【问题描述】:

我尝试为主页创建一个基于列表操作奏鸣曲管理员的块是可能的吗?

example 
  dashboard:
        blocks:
            -  type: mea.task.block, position: center, roles: [ ROLE_WORKER ] 

这里是块渲染

class TaskListAdminBlock extends AbstractAdminBlockService

    /**
     * @inheritdoc
     */
    public function execute(BlockContextInterface $blockContext, Response $response = null)
    
        $controller = 'Mea\TaskBundle\Sonata\Controller\TaskCrudController::listAction';
        $path       = [
            '_controller' => $controller,
        ];

        $subRequest = $this->requestStack->getMasterRequest()->duplicate($query, null, $path);

        return $this->kernel->handle($subRequest, HttpKernelInterface::SUB_REQUEST);
    

TaskCrudController 是任务的奏鸣曲管理控制器

这个抛出错误

There is no `_sonata_admin` defined for the controller `Mea\TaskBundle\Sonata\Controller\TaskCrudController` and the current route ``

是否可以修复此代码或以其他方式存档?

【问题讨论】:

【参考方案1】:

好的,我找到了很好的解决方案 这呈现在 ajax 制作的管理列表中

public function execute(BlockContextInterface $blockContext, Response $response = null)
    

        $controller = 'Mea\TaskBundle\Sonata\Controller\TaskCrudController::listAction';
        $path = array(
            '_controller' => $controller
        );

        $query = [
            'filter'=>[
                '_per_page'=>4,
            ],
        ];

        $subRequest = $this->requestStack->getMasterRequest()->duplicate($query, null, $path);
        $subRequest->headers->set('X-Requested-With','XMLHttpRequest');
        $subRequest->request->set('_sonata_admin','mea.task.task.admin');

        $response = $this->kernel->handle($subRequest, HttpKernelInterface::SUB_REQUEST);

        return $response;

    

不能完全正常工作 - ajax 模式切换操作来选择。

【讨论】:

以上是关于在块中渲染奏鸣曲管理员列表的主要内容,如果未能解决你的问题,请参考以下文章

奏鸣曲管理员:列表始终使用默认语言

奏鸣曲管理员获取所有列表项

尝试在块中保存对象时崩溃。 (CoreData 无法满足...的错误)

如何使用奏鸣曲管理员创建自定义列表

奏鸣曲管理员列表可编辑与编辑/显示冲突

如何在奏鸣曲管理列表视图中添加“后备标签”