SilverStripe 4中,原方法中没有Extension Hook的情况下,如何扩展已有方法?

In SilverStripe 4, how to extend an existing method when there is no Extension Hook inside the original method?

我想覆盖 'LoginHandler' class 中的 'loginForm' 方法。我正在尝试为此使用下面给出的代码。但它不起作用。

LoginHandlerExtension.php

    <?php

    use SilverStripe\Core\Extension;

    class LoginHandlerExtension extends Extension {

        public function loginForm() {
            return 'xxxxxx';
        }
    }

app.yml

SilverStripe\Security\MemberAuthenticator\LoginHandler:
  extensions:
    - LoginHandlerExtension

您想在 loginForm 方法上重写什么?如果您希望它使用不同的形式 class(例如 MyMemberLoginForm),您可以告诉 Injector 在 YML 中使用您的自定义 class,如下所示:

SilverStripe\Core\Injector\Injector:
  MemberLoginForm:
    class: My\Namespaced\LoginForm

因为 LoginForm 方法除了 return 表单之外什么都不做。