我从3.0.x升级到SilverStripe 3.1.13。我已经更新了我的composer.json:
"require": {
"php": ">=5.3.2",
"silverstripe/cms": "3.1.*",
"silverstripe/framework": "3.1.*",
"silverstripe/recaptcha": "*",
"silverstripe/spamprotection": "*",
}
以及其他一些不相关的要求。
sileverstipe / recaptcha需要spamprotection模块。
silverstripe / modules / recaptcha / code / RecaptchaField.php确实扩展了SpamProtectorField。
在我的SilverStripe 3.0安装中,SpamProtection模块v1.0.x-dev有一个SpamProtectorField.php文件,SpamProtectorField类定义为抽象类,但该版本需要silverstripe / framework 3.0。*。 SpagProtectorField.php文件在Packagist silverstripe / spamprotection v1.2.0或v2.0.0中不可用,它们使用silverstripe / framework 3.1。*。
我可能只是在我的代码目录中创建SpamProtectorField.php文件并通过此错误,但这是最好的行动方案吗?该文件应该是其中一个模块的一部分。
答案 0 :(得分:2)
SilverStripe 3.1的SilverStripe Recaptcha module的当前版本不需要SpamProtectionField
即可运行。
该模块的早期版本RecaptchaField
扩展SpamProtectionField
。 RecaptchaField
现在扩展FormField
。
如果你有最新版本的SilverStripe Recaptcha模块和SpamProtection模块,你不应该对SpamProtectionField
有任何错误。
答案 1 :(得分:0)
在撰写本文时,稳定版的silverstripe / recaptcha不适用于稳定版的silverstripe / spamprotection。但是,recaptcha的开发版本确实有效,你可以通过在composer.json中指定它来获得它,如下所示:
"silverstripe/recaptcha": "1.2.*-dev"
请注意" -dev"后缀仅适用于recaptcha。其他没有后缀的组件继续使用您指定的最小稳定性,或者如果省略最小稳定性,则默认值是稳定的。
也许在阅读时,不再需要-dev后缀。要查看固定代码是否已发布到稳定版,请在此处查看是否有比1.2.0更新的标记: https://github.com/chillu/silverstripe-recaptcha/tags
或者在这里查看它是否已经部署到packagist,composer从哪里获取文件。 https://packagist.org/packages/silverstripe/recaptcha