如何扩展现有方法

如何扩展现有方法

本文介绍了在SilverStripe 4中,当原始方法内没有扩展挂钩时,如何扩展现有方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想覆盖'LoginHandler'类中的'loginForm'方法.我正在尝试使用下面给出的代码.但这是行不通的.

I want to override 'loginForm' method in 'LoginHandler' class. I am trying to use the code given below for that. But it is not working.

LoginHandlerExtension.php

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方法上覆盖什么?如果您希望它使用其他Form类(例如MyMemberLoginForm),则可以告诉Injector在YML中使用自定义类,如下所示:

What would you want to override on the loginForm method? If you want it to use a different Form class (e.g. MyMemberLoginForm), you can tell Injector to use your custom class in YML like this:

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

因为LoginForm方法除了返回表单外没有做任何其他事情.

as the LoginForm method does nothing else but return the form.

这篇关于在SilverStripe 4中,当原始方法内没有扩展挂钩时,如何扩展现有方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 06:56