定制 tomaskarlik/select2input 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

tomaskarlik/select2input

Composer 安装命令:

composer require tomaskarlik/select2input

包简介

Select2 form input for Nette

README 文档

README

Install

Download package

composer require tomaskarlik/select2input

Register extension in config.neon

select2: TomasKarlik\Select2Input\DI\Select2InputExtension

Download Select2 or add to bower.json and include JS to your project

"dependencies": {
	"select2": "~4.0"
}
$(document).ready(function() {
	$('.select2').each(function() {
		$(this).select2({
			ajax: {
				url: $(this).data('select2-url'),
				dataType: 'json',
				// custom parameters
			}
		  });
	});
});

Form usage

$form = new Form;
$form->addSelect2('client_id', $clientRepository, 'Klient:')
	->setRequired('Vyberte klienta!')
	->setResultsPerPage(15);
$form->addSelect2Multiple('clients', $clientRepository, 'Klienti:')

Datasource example

namespace App\Model\Repository;

use TomasKarlik\Select2Input\ISelect2DataSource;
use TomasKarlik\Select2Input\Select2ResultEntity;


class ClientRepository implements ISelect2DataSource
{

	/**
	 * @param string $query
	 * @param int $limit
	 * @param int $offset
	 * @return Select2ResultEntity[]
	 */
	public function searchTerm(string $query, int $limit, int $offset): array
	{
		$return = [];
		$selection = $this->getClientTable()
			->where(
				'company ILIKE ?', '%' . $query . '%'
			)
			->order('company')
			->select('client.id, client.company')
			->limit($limit, $offset);

		while ($row = $selection->fetch()) {
			$result = new Select2ResultEntity;
			$result->setId($row->id);
			$result->setText($row->company);
			$return[] = $result;
		}
		return $return;
	}


	/**
	 * @param string $query
	 * @return int
	 */
	public function searchTermCount(string $query): int
	{
		return $this->getClientTable()
			->where(
				'company ILIKE ?', '%' . $query . '%'
			)
			->count('*');
	}


	/**
	 * @param mixed $key
	 * @return Select2ResultEntity|NULL
	 */
	public function findByKey($key): ?Select2ResultEntity
	{
		if ( ! is_numeric($key)) {
			return NULL;
		}

		$client = $this->getClientTable()->wherePrimary($key)->fetch();
		if ( ! $client) {
			return NULL;
		}

		$result = new Select2ResultEntity;
		$result->setId($client->id);
		$result->setText($client->company);
		return $result;
	}

}

tomaskarlik/select2input 适用场景与选型建议

tomaskarlik/select2input 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 13.98k 次下载、GitHub Stars 达 2, 最近一次更新时间为 2018 年 03 月 04 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「Forms」 「nette」 「input」 「select2」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 tomaskarlik/select2input 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 tomaskarlik/select2input 我们能提供哪些服务?
定制开发 / 二次开发

基于 tomaskarlik/select2input 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 13.98k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 7
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 6
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2018-03-04