【发布时间】:2015-06-02 01:04:13
【问题描述】:
我正在从 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 需要垃圾邮件防护模块。
silverstripe/modules/recaptcha/code/RecaptchaField.php 确实扩展了 SpamProtectorField。
在我的 SilverStripe 3.0 安装中,SpamProtection 模块 v1.0.x-dev 有一个 SpamProtectorField.php 文件,其中 SpamProtectorField 类定义为抽象类,但该版本需要 silverstripe/framework 3.0.* 。 SpamProtectorField.php 文件在使用 silverstripe/framework 3.1.* 的 Packagist silverstripe/spamprotection v1.2.0 或 v2.0.0 中不可用。
我可能只是在我的代码目录中创建 SpamProtectorField.php 文件并克服此错误,但这是最好的做法吗?该文件是否应该是这些其他模块之一的一部分。
【问题讨论】:
-
最新的 SilverStripe Recaptcha 模块不需要 SpamProtectorField 即可工作。您不应该创建 SpamProtectorField 来使其正常工作。尝试运行代码时是否遇到错误?还是 Recaptcha 只是没有出现?您是在使用 UserDefinedForm 还是自定义表单页面?
-
我在运行 /dev/build 时收到此消息 致命错误:在 C:\Users\dkolodziejczyk\SS_Sites\ss-github31\silverstripe\modules\recaptcha\code\ 中找不到 Class 'SpamProtectorField'第 25 行的 RecaptchaField.php
-
检查第 25 行
RecaptchaField.php中的代码。如果您使用的是 latest version,则应显示class RecaptchaField extends FormField。听起来您拥有的是旧版本,扩展了SpamProtectorField。 -
我将 composer.json 更改为需要 "silverstripe/recaptcha": "1.2.x-dev",并将 minimum-stability 更改为 'dev' 这清除了错误,但我现在使用一堆开发级模块。
-
我猜是因为 Recaptcha 模块的最新分支存在构建错误,因此 composer 认为该分支现在具有开发稳定性。
标签: php composer-php silverstripe