【问题标题】:SilverStripe class 'SpamProtectorField' not found in RecaptchaField.php在 RecaptchaField.php 中找不到 SilverStripe 类“SpamProtectorField”
【发布时间】: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


【解决方案1】:

用于 SilverStripe 3.1 的 SilverStripe Recaptcha module 的当前版本不需要 SpamProtectionField 即可工作。

该模块的先前版本具有 RecaptchaField 扩展 SpamProtectionFieldRecaptchaField 现在扩展 FormField

如果您有最新版本的 SilverStripe Recaptcha 模块和 SpamProtection 模块,您应该不会收到关于 SpamProtectionField 的任何错误。

【讨论】:

    【解决方案2】:

    在撰写本文时,silverstripe/recaptcha 的稳定版本不能与 silverstripe/spamprotection 的稳定版本一起使用。但是,recaptcha 的开发版本确实有效,您可以通过在 composer.json 中指定它来获取它,如下所示:

    "silverstripe/recaptcha": "1.2.*-dev"
    

    请注意,“-dev”后缀仅适用于 recaptcha。其他没有后缀的组件继续使用您指定的任何 minimum-stability,或者如果省略 minimum-stability,则默认为 stable。

    也许在阅读的时候,-dev 后缀已经不再需要了。要查看固定代码是否已发布到稳定版,请在此处查看是否有比 1.2.0 更新的标签: https://github.com/chillu/silverstripe-recaptcha/tags

    或者在这里查看它是否已经部署到packagist,composer从那里获取文件。 https://packagist.org/packages/silverstripe/recaptcha

    【讨论】:

      猜你喜欢
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多