dogmatic69/cakephp-sifter

CakePHP插件,用于过滤和搜索模型数据

安装: 7

依赖项: 0

建议者: 0

安全: 0

星级: 1

关注者: 3

分支: 0

公开问题: 1

类型:cakephp-plugin

dev-master 2014-02-17 23:41 UTC

This package is not auto-updated.

Last update: 2024-09-28 16:09:12 UTC


README

Build Status Coverage Status

Sifter

Sifter 是一个 CakePHP 插件,使搜索和过滤数据变得简单。它还可以配置以更改搜索方式。

所有配置都在模型中完成,这意味着不需要在表单、重定向或任何其他代码中乱搞。组件会与请求数据交互并根据请求中找到的数据执行各种操作。

主要功能

  • 基于模型/行为配置自动生成表单。(使用包含的元素)
  • 字段类型反射以获得最佳输入类型
  • 所有文本输入的自动 AJAX 自动完成(需要包含 jQuery)
  • 自动选择下拉列表用于外键字段(包括深度关系,可自定义查找方法设置)
  • 自动修改分页,以便可以以最小的代码更改将其插入,也可以与普通查找或手动使用
  • Post -> Redirect -> Get,因此搜索是可索引的,可链接的
  • 安全 - 只搜索配置的动作中的配置字段,额外的字段将被简单地忽略
  • 深度关系搜索,特别是使用自定义查找进行搜索时,可以控制所有的连接和额外的搜索要求

插件由以下主要部分组成

行为

行为执行了许多操作

  • 根据字段模式确定表单输入
  • 在模型中查找并调用自定义查找方法以获取数据
  • 配置要搜索的内容和位置

组件

  • 捕获请求并执行 POST -> GET 重定向或获取 AJAX 自动完成的数据
  • 获取并设置数据以填充搜索表单中的选择视图变量
  • 过滤 GET 参数并修改/返回查找条件

助手/元素

这是 Sifter 插件的前端。这是完全可选的,但应该可以覆盖大多数使用情况。如果您不打算使用包含的元素来构建搜索表单,至少应该看看它,以了解使搜索工作所需的要素。

  • 元素:基于配置的模型和设置创建默认搜索表单
  • 助手:将行为设置转换为表单输入

安装

使用 git 安装

git clone https://github.com/dogmatic69/cakephp-sifter Plugin/Sifter

作为子模块安装

git submodule add https://github.com/dogmatic69/cakephp-sifter Plugin/Sifter

使用 composer 安装(即将推出)

composer.phar require dogmatic69/cakephp-sifter

基本用法

将行为附加到您想要筛选的模型。这可以在 actsAs 属性中完成,也可以动态完成,有关更多详细信息,请参阅 CakePHP 文档。

class MyModel extends AppModel {
	public $actsAs = array(
		... other behaviors
		'Sifter.Sifter' => array(
			'fields' => array(
				'MyModel.field_1' => array(
					'input' => array(
						'placeholder' => 'Customize your form with ease',
					)
				),
				'MyOtherModel.field_2', 
				'field_3', // <- will automatically use the current model alias
			)
		),
	);

	// code
}

一旦附加到模型,您需要将组件附加到控制器,以便它可以捕获和处理 sifter 请求。有关具体信息,请参阅 CakePHP 文档。

class MyController extends AppController {

public $components = array(
	...,
	'Sifter.Sifter',
);

// code

}

最后,您需要一个表单,以便用户可以输入搜索要求。有一个包含的元素可以基于配置的输入构建通用搜索表单。或者,您可以使用表单助手构建自己的表单。

echo $this->element('Sifter.sift');

这就完成了,现在当您访问页面时应该能看到一个搜索表单。在表单中提交数据将执行PRG到包含所有参数的URL。如果您使用分页,这些参数已包含在PaginatorComponent::$settings属性中。如果您在页面上使用常规查找,可以使用SifterComponent::sift()方法获取查询条件。

在控制器方法中

$conditions = $this->Sifter->sift($this);
pr($conditions);

// output
array(
	'conditions' => array(
		'MyModel.field_1' => 'foobar',
		'MyOtherModel.field_2' => 'baz',
		...
	),
	'contain' => array(
		'MyOtherModel',
	)
)

贡献

在github.com/dogmatic69/cakephp-sifter提交错误/补丁