【问题标题】:Can I load an alternative controller based on some criteria?我可以根据某些标准加载替代控制器吗?
【发布时间】:2022-01-23 13:37:47
【问题描述】:

通常在测试或调试时,我会插入仅针对我的 IP 执行的代码块:

if($_SERVER['REMOTE_ADDR']=="x.x.x.x") {
  // Do something special
}

或者我包含一个完全不同的文件:

if($_SERVER['REMOTE_ADDR']=="x.x.x.x") {
  require "some-file.php";
}
else {
  require "some-other-file.php";
}

这让我可以在不打扰其他用户的情况下进行测试和调试。

现在,在一个 YII 框架中,我已将我们的支付网关替换为另一个,因此我希望仅为我的 IP 加载不同版本的 PaymentController.php。

在 YII 中是否有可能,如果可以,我该怎么做?

【问题讨论】:

    标签: php yii frameworks


    【解决方案1】:

    为什么不在开发/测试服务器上进行测试?我可能会遗漏一些东西。我们这样做的方法是启动一个开发服务器,然后创建一个到 localhost 的 ssh 隧道并进行测试。

    另一种可能的方法是创建一个名为 debug 的特殊角色,并在您必须在生产中执行此操作时使用它。这将允许您将角色应用于您的登录,或者可能是特殊的调试登录,并且角色控制对这个特殊测试代码的访问。

    【讨论】:

    • 通常我会使用开发服务器,但支付网关使用回调到某些 url,所以我不能简单地调用 dev.example.com 而不是 example.com。或者更确切地说,我在开发和测试时确实这样做了,但是使用真实信用卡而不是测试卡的最终测试应该在真实服务器上完成。在家里,我可以简单地更改我的主机文件,让 url 指向开发服务器,但网关当然不能这样做。 (在下一条评论中继续)
    • (续)这没什么大不了的,因为我可以在测试时切换一下更改的文件,但我也在学习 Yii,想知道这是否可能。我来看看角色方法。
    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 2017-07-22
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多