You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Magento 2 后台订单详情页添加自定义按钮点击报404问题求助

修复步骤

1. 修正控制器目录与命名空间大小写

Magento 2 路由匹配对目录大小写敏感,你当前的控制器路径/app/code/MG/Dropship/Controller/AdminHtml/Order/Index.php中,AdminHtml需要改为首字母大写其余小写的Adminhtml:

  • 重命名目录:将AdminHtml改为Adminhtml
  • 同步修改控制器内的命名空间:
<?php
// 把原来的AdminHtml改为Adminhtml
namespace MG\Dropship\Controller\Adminhtml\Order;
 
class Index extends \Magento\Sales\Controller\Adminhtml\Order
{
    // 原有逻辑保持不变
}

2. 跳转URL补充order_id参数

你的控制器内调用$this->_initOrder()需要从请求参数中获取订单ID才能初始化订单对象,参数缺失会直接返回404。修改AddCustomButton.php内的URL生成逻辑:

if ($context->getRequest()->getFullActionName() == 'sales_order_view') {
    // 新增获取当前订单ID的逻辑
    $orderId = $context->getRequest()->getParam('order_id');
    // 生成URL时传递order_id参数
    $url = $context->getUrl('mg_dropship/order/index', ['order_id' => $orderId]);
    $buttonList->add(
        'customButton',
        ['label' => __('Do Something'), 'onclick' => 'setLocation("' . $url . '")', 'class' => 'reset'],
        -1
    );
}

3. 新增ACL权限配置文件

你控制器_isAllowed方法校验的MG_Dropship::order_dosomething权限没有定义,权限校验不通过也会返回404。新建/app/code/MG/Dropship/etc/acl.xml文件:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
    <acl>
        <resources>
            <resource id="Magento_Sales::sales" title="Sales">
                <resource id="Magento_Sales::sales_order" title="Orders">
                    <resource id="MG_Dropship::order_dosomething" title="执行Dropship操作"/>
                </resource>
            </resource>
        </resources>
    </acl>
</config>

4. 生效修改操作

修改完成后执行以下命令生效:

# 清理缓存
bin/magento cache:clean
# 生产环境需要额外执行编译
bin/magento setup:di:compile

最后进入后台系统 > 权限 > 用户角色,给对应角色勾选新增的执行Dropship操作权限即可。

关于后台URL密钥的问题:使用Magento原生getUrl方法生成后台路由时,会自动拼接安全密钥,无需额外开发,修改完成后开启密钥功能也可正常运行。

内容的提问来源于stack exchange,提问作者user1625155

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:36:03