SilverStripe类' SpamProtectorField'在RecaptchaField.php中找不到

时间:2015-06-02 01:04:13

标签: php composer-php silverstripe

我从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文件并通过此错误,但这是最好的行动方案吗?该文件应该是其中一个模块的一部分。

2 个答案:

答案 0 :(得分:2)

SilverStripe 3.1的SilverStripe Recaptcha module的当前版本不需要SpamProtectionField即可运行。

该模块的早期版本RecaptchaField扩展SpamProtectionFieldRecaptchaField现在扩展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