lsb / numbering-bundle
Symfony应用程序的数字生成器
v1.0.2
2020-05-20 21:46 UTC
Requires
- php: >=7.2
- doctrine/doctrine-bundle: 2.*
- doctrine/orm: 2.*
- symfony/framework-bundle: 5.0.*
- symfony/validator: 5.0.*
Requires (Dev)
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: ^8.0
- symfony/phpunit-bridge: ^5.0
This package is auto-updated.
Last update: 2024-09-05 20:31:00 UTC
README
此包为Symfony 5应用程序中任何给定对象(例如订单、发票等)生成后续数字的功能。
它在系统数据库中创建一个简单的配置,存储当前计数器和上下文数据。
安装
composer require lsb/numbering-bundle
配置
通过在 lsb_numbering.yaml 文件中定义模式和计数器配置数据来配置此包。
# examples of configuration
lsb_numbering:
patterns:
- { name: pattern1, pattern: 'IN/{year}/{number|6}'}
- { name: pattern2, pattern: "ON/{day}/{number|4}"}
- { name: pattern3, pattern: "{number|5}-{context_object}-{month}"}
counter_configs:
- {name: counterConfig1, patternName: pattern1, step: 1, start: 10 }
- {name: counterConfig2, patternName: pattern2, step: 2, start: 20, time_context: year }
- {name: counterConfig3, patternName: pattern3, step: 3, start: 30, time_context: month, context_object_fqcn: "App/Entity/Branch" }
配置规则
- 可以通过任何带有预定义标签的字符串定义数字模式(请参阅标签部分)
- 标签必须用花括号括起来
- 只需 {number} 标签即可
- 计数器可以在时间上下文中工作
- 某些标签后可以跟一个长度修饰符,例如 {year|2}, {number|6},这会将解析的值限制在给定的长度。
标签
用法
主题对象是您想要为其生成数字的任何对象。它需要实现 NumberableInterface。
<?php
namespace App\Entity;
use LSB\NumberingBundle\Interfaces\NumberableInterface;
class Order implements NumberableInterface
{
// class body
}
使用 NumberingGenerator 服务示例
<?php
namespace App\Service;
use App\Entity\Order;
use LSB\NumberingBundle\Model\GeneratorOptions;
use LSB\NumberingBundle\Service\NumberingGenerator;
use LSB\NumberingBundle\Interfaces\NumberableInterface;
class ExampleService
{
/** @var NumberingGenerator */
protected $ng;
public function __construct(NumberingGenerator $generator)
{
$this->ng = $generator;
}
public function exampleNumbers(): void
{
// subject example object
$order = new Order();
// options object
$options = new GeneratorOptions('counterConfig1');
// generate number
$simpleNumber = $this->ng->generateNumber($order, $options);
// returns resolved number e.g. IN/2020/000001
$simpleNumber->getNumber();
}
}
许可
LSBNumberingBundle 在 MIT 许可证 下可用。