Sylius:重定向时缺少路由参数 (SyliusResourceBundle)
Sylius: route params missing on redirect (SyliusResourceBundle)
我有一个显示父对象版本的嵌套管理,我必须将路由参数从父对象传递到版本管理。以下配置工作正常,但我收到错误,在编辑和删除版本后缺少必需的路由参数:
Some mandatory parameters are missing ("parentCode") to generate a URL for route "...".
路由配置如下所示:
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
,则只有 created/deleted/updated 对象的 ID。
路由文档也会建议这样做 (https://github.com/Sylius/SyliusResourceBundle/blob/master/docs/create_resource.md#custom-redirect-after-success),但如前所述,这是配置中的标量字段。
有谁知道,我怎样才能摆脱这个错误?
您是说从更新重定向到更新路由吗?我想它可以像这个例子一样工作:
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
我有一个显示父对象版本的嵌套管理,我必须将路由参数从父对象传递到版本管理。以下配置工作正常,但我收到错误,在编辑和删除版本后缺少必需的路由参数:
Some mandatory parameters are missing ("parentCode") to generate a URL for route "...".
路由配置如下所示:
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
,则只有 created/deleted/updated 对象的 ID。
路由文档也会建议这样做 (https://github.com/Sylius/SyliusResourceBundle/blob/master/docs/create_resource.md#custom-redirect-after-success),但如前所述,这是配置中的标量字段。
有谁知道,我怎样才能摆脱这个错误?
您是说从更新重定向到更新路由吗?我想它可以像这个例子一样工作:
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