【问题标题】:Sylius: route params missing on redirect (SyliusResourceBundle)Sylius:重定向时缺少路由参数 (SyliusResourceBundle)
【发布时间】:2021-09-03 12:59:34
【问题描述】:

我有一个显示父对象版本的嵌套管理,我必须将路由参数从父对象传递给版本管理。以下配置工作正常,但我收到错误,即在编辑和删除版本后缺少所需的路由参数:

缺少一些强制参数(“parentCode”)来为路由“...”生成 URL。

路由配置如下所示:

app.admin.parent_version:
    resource: |
        alias: app.parent_version
        path: "admin/parents/{parentCode}/versions"
        section: admin
        templates: "@SyliusAdmin\\Crud"
        except: ['show']
        redirect: update
        grid: app.admin.parent_version
        permission: true
        vars:
            route:
                parameters:
                    parentCode: $parentCode
            all:
                templates:
                    form: "/Admin/ParentVersion/_form.html.twig"
                    breadcrumb: "/Admin/ParentVersion/_breadcrumb.html.twig"
            index:
                parameters:
                    parentCode: $parentCode
            create:
                route:
                    parameters:
                        parentCode: $parentCode
            update:
                route:
                    parameters:
                        parentCode: $parentCode
                        id: resource.id
    type: sylius.resource

'config' 键是一个标量,但在vendor/sylius/resource-bundle/src/Bundle/Controller/RequestConfiguration::getRedirectParameters 中,我似乎可以像上面的 vars-key 一样配置参数:

  $redirect = $this->parameters->get('redirect');
        if (isset($redirect['parameters']) && $redirect['parameters'] === []) {
            return [];
        }

        if (!is_array($redirect)) {
            $redirect = ['parameters' => []];
        }

        $parameters = $redirect['parameters'] ?? [];
        $parameters = $this->addExtraRedirectParameters($parameters);

        if (null !== $resource) {
            $parameters = $this->parseResourceValues($parameters, $resource);
        }

如果我转储 $$parameters,则只有创建/删除/更新对象的 id。 路由的文档也会建议这一点 (https://github.com/Sylius/SyliusResourceBundle/blob/master/docs/create_resource.md#custom-redirect-after-success),但如前所述,这是配置中的标量字段。

有谁知道,我怎样才能摆脱这个错误?

【问题讨论】:

    标签: symfony sylius


    【解决方案1】:

    你的意思是从更新重定向到更新路由吗?我想它可以像这个例子一样工作:

    vars:
    update:
        redirect:
            route: update
            parameters:
                parentCode: $parentCode
                id: resource.id
    

    另外,您可以尝试手动定义更新路线吗?像这样

    app.admin.parent_version_update:
    path: /update
    controller: app.controller.parent_version::updateAction
    _defaults:
        _sylius:
            section: admin
            templates: "@SyliusAdmin\\Crud\\update.html.twig"
            redirect:
                route: app.admin.parent_version_index
                parameters:
                    parentCode: $parentCode
                    id: resource.id
    

    【讨论】:

    • 嗯,有时人们只见树木不见森林 :D 这成功了,谢谢
    • 很高兴为您提供帮助,我也建议将 xdebug 与 sylius 项目一起使用,虽然需要配置,但更容易在调用堆栈中跟踪配置问题 ;)
    猜你喜欢
    • 2018-09-20
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 2019-12-14
    • 2019-07-24
    • 2018-06-02
    • 2017-02-27
    • 2021-09-02
    相关资源
    最近更新 更多