netglue / zf2-akismet-module
Requires
- php: >=5.3.3
- zendframework/zendframework: ~2.2
Requires (Dev)
- phpunit/phpunit: ~3.7
This package is auto-updated.
Last update: 2021-09-02 12:22:56 UTC
README
弃用
如果你仍在使用 ZF 并且需要这个包,它不会消失,但也不会再进行任何维护。Akismet 仍然很有用——你可能想看看 gsteel/akismet,这是一个易于使用的独立客户端,经过了充分的测试……这样你可以实现自己的验证器,并仅使用 API 客户端!
简介
一个简单的 ZF2 模块,提供使用 Akismet API 的服务,以及一个方便的验证器,你可以将其附加到表单元素上。
当前状态
除了提交垃圾邮件和垃圾邮件外,大多数情况都已测试,尽管在我看来这些应该可以很好地工作。
安装
使用 composer 安装 netglue/zf2-akismet-module
,然后在你的 application.config.php
中启用模块 NetglueAkismet
。
将你的 Akismet ApiKey 添加到本地自动加载的配置中,如下所示
return array(
'netglue_akismet' => array(
'apiKey' => 'YourApiKey',
),
);
还有更多选项可以设置默认值。查看 config/module.config.php
获取完整列表。
Akismet 服务
一旦模块加载,Akismet 服务应可通过主服务定位器以名称 'NetglueAkismet\Service\AkismetService'
访问。它还有一个简短的别名 'AkismetService'
。
服务的基本使用方法如下
$service = $this->getServiceLocator()->get('AkismetService');
$result = $service->isSpam($contentToCheck, $authorEmail, $commentType, $additionalParams);
并非所有参数都是必需的,所有参数都可以传递到 $additionalParams
数组中,确保键与 API 期望的相匹配。你可以在这里找到文档:comment-check 文档
验证器
验证器通过 ValidatorManager
由模块注册,因为它依赖于服务实例。只要你的表单元素是使用表单元素管理器/工厂创建的,验证器就应该就绪——这很重要。你必须使用 $formElementManager->get('My\Form\Name');
初始化你的表单,以便验证器能够正确初始化。
例如,设置你的输入过滤器配置如下
public function getInputFilterSpecification() {
return array(
'myNameFormElement' => array(
'required' => true,
'filters' => array(
array('name' => 'Zend\Filter\StringTrim'),
),
),
'emailFormElement' => array(
'required' => true,
'filters' => array(
array('name' => 'Zend\Filter\StringToLower'),
array('name' => 'Zend\Filter\StringTrim'),
),
),
'comment' => array(
'required' => true,
'filters' => array(
array('name' => 'Zend\Filter\StringTrim'),
),
'validators' => array(
array(
'name' => 'AkismetValidator', // Or 'NetglueAkismet\Validator\Akismet'
'options' => array(
'comment_type' => 'comment', // Or 'contact-form' or something else, or leave it to the service configured default
'context_map' => array(
'emailFormElement' => 'comment_author_email',
'myNameFormElement' => 'comment_author',
),
),
),
),
),
);
}
测试
我认为测试相当不错,但 submitHam
和 submitSpam
还未测试。
要运行测试,请切换到模块目录,并执行php composer.phar install
命令下载所有依赖;将phpunit.xml.dist
文件复制到phpunit.xml
。默认情况下,网络测试是禁用的。要运行这些测试,请在phpunit.xml
中取消注释或删除排除指令,并确保在test/config/local.php
中设置了一个有效的API密钥。