netglue / zf2-akismet-module

此包已弃用,不再维护。作者建议使用 gsteel/akismet 包。

提供 Akismet 服务和验证器的 ZF2 模块

0.1.1 2014-06-17 09:10 UTC

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',
						),
					),
				),
			),
		),
	);
}

测试

我认为测试相当不错,但 submitHamsubmitSpam 还未测试。

要运行测试,请切换到模块目录,并执行php composer.phar install命令下载所有依赖;将phpunit.xml.dist文件复制到phpunit.xml。默认情况下,网络测试是禁用的。要运行这些测试,请在phpunit.xml中取消注释或删除排除指令,并确保在test/config/local.php中设置了一个有效的API密钥。