firesphere/rangefield 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

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

firesphere/rangefield

Composer 安装命令:

composer require firesphere/rangefield

包简介

Range selector for SilverStripe

关键字:

README 文档

README

CircleCI codecov Scrutinizer Code Quality

Gitstore

Range field

Play with ranges in your forms in SilverStripe.

Demo animation

Installation

composer require firesphere/rangefield

Usage

use Firesphere\RangeField\RangeField;
use SilverStripe\CMS\Model\SiteTree;

class Page extends SiteTree
{
   private static $db = [
      'RangeValues' => 'Varchar',
   ];

   public function getCMSFields()
   {
      $fields = parent::getCMSFields();

      $fields->addFieldToTab(
         'Root.Main',
         RangeField::create('RangeValues', 'Range of values')
      );

      return $fields;
   }
}

More complex configuration (including range options):

RangeField::create(
   $field = 'RangeValues',
   $title = 'Range of values',
   $start = 0,
   $min = 0,
   $max = 100,
   $range = [
      'min' => 0, // this will override $min
      '25%' => 25,
      '50%' => 50,
      '75%' => 75,
      'max' => 100, // this will override $max
   ],
   $value = 33
)

The field uses noUiSlider, so you can find more information there.

When you change the number of handlers on a field, the values are reset, because it's impossible to determine which of the default values is supposed to be the original value.

Selections are stored as a comma-separated set of values, e.g. 33.00,50.00 You'll need to apply your own logic to use the given values in the frontend.

Limited formatting can be applied to the value via the setUnit(), setDecimalPlace(), and setFormat() methods.

Options

Option Default Method Usage
Snap false setSnap() Set snapping to points
Data [] setData() Override the generated data
Max 0 setMax() Change the maximum value⍟
Min 100 setMin() Change the minimum value⍟
Density 5 setDensity() Set the density of the pips
Range [] setRange() Set the range values⍟
Start [0] setStart() Set the default value⍟
Step null setStep() Set the step size
Show Pips true setShowPips() Show or hide the pips
Snap false setSnap() Snap to the range-set values instead of fluid
Unit '' setUnit() Append a unit to the output value
Decimal Place 2 setDecimalPlace() Format the number of decimal places in the output value
Format '', 2 setFormat() A shortcut for setting both units and decimal places

⍟ These items can be set in the construct/create method

Using the field in the frontend (= public site)

If you need to use this field not only in the admin section, but in the frontend, you need to define a couple of CSS and JavaScript requirements in your PageController class:

app/src/PageController.php:

class PageController extends ContentController
{
	
	protected function init()
	{
		parent::init();
		// You can include any CSS or JS required by your project here.
		// See: https://docs.silverstripe.org/en/developer_guides/templates/requirements/
		
		// RangeField
		Requirements::css('firesphere/rangefield:client/dist/main.css');
		Requirements::javascript('firesphere/rangefield:client/dist/main.js');
		
	}
}      

If you are only using this module in the admin section, you don't need to do this because those requirements are automatically defined for the admin section.

Known issues

  • Multiple start values seem not to work properly
  • Slider starts at minimum rather than current value after publish

License

This module is published under BSD 3-clause license, although these are not in the actual classes, the license does apply:

http://www.opensource.org/licenses/BSD-3-Clause

Copyright (c) 2012-NOW(), Simon "Firesphere" Erkelens

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Did you read this entire readme? You rock!

Pictured below is a cow, just for you.

               /( ,,,,, )\
              _\,;;;;;;;,/_
           .-"; ;;;;;;;;; ;"-.
           '.__/`_ / \ _`\__.'
              | (')| |(') |
              | .--' '--. |
              |/ o     o \|
              |           |
             / \ _..=.._ / \
            /:. '._____.'   \
           ;::'    / \      .;
           |     _|_ _|_   ::|
         .-|     '==o=='    '|-.
        /  |  . /       \    |  \
        |  | ::|         |   | .|
        |  (  ')         (.  )::|
        |: |   |;  U U  ;|:: | `|
        |' |   | \ U U / |'  |  |
        ##V|   |_/`"""`\_|   |V##
           ##V##         ##V##

firesphere/rangefield 适用场景与选型建议

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

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

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

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

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

BUG 修复 & 性能优化

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

项目外包 & 长期维护

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

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

统计信息

  • 总下载量: 17.38k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 8
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: LGPL-3.0-or-later
  • 更新时间: 2018-03-13