namshi/utility-bundle

一系列我们发现非常实用并用于我们Web系统中的工具。

安装: 27,732

依赖: 0

建议者: 0

安全性: 0

星级: 6

关注者: 18

分支: 3

开放问题: 0

类型:symfony-bundle

1.1.0 2014-05-01 06:44 UTC

This package is not auto-updated.

Last update: 2024-09-09 11:51:49 UTC


README

这个包提供了一些基本的、有点傻的工具,我们在Symfony2应用中广泛使用它们。

安装

可以通过composer轻松安装此包("namshi/utility-bundle": "dev-master")。

更多信息请访问 Packagist

然后在 AppKernel.php 中启用它

new Namshi\UtilityBundle\NamshiUtilityBundle(),

Doctrine CommaSeparatedList 类型

如果您想将数组持久化到数据库中,作为一个以逗号分隔的字符串列表(例如,以便能够执行 FIND_IN_SET),您只需使用 Namshi\UtilityBundle\ORM\Type\CommaSeparatedList 类型。

请记住在Symfony2的 config.yml 中注册它

doctrine:
    dbal:
        types:
            comma_separated_list: Namshi\UtilityBundle\ORM\Type\CommaSeparatedList

然后在您的实体中使用它

/**
 * @var array
 *
 * @ORM\Column(name="tags", type="comma_separated_list", nullable=true)
 */
protected $tags = array();

带认证的文件服务

您可以利用的一个工具是文件服务,结合认证使用。

假设您有一个文件,protected.txt,位于 /path/to/symfony2/data/protected.txt,并且您只想让某些用户能够访问它。

您只需启用一个路由,告诉包要服务哪个文件

protected_file:
    pattern:  /protected.txt
    defaults: { _controller: NamshiUtilityBundle:Default:serveFile, file: protected.txt }

并在 parameters.yml 中定义文件路径

namshi_utility.files.protected.txt: /path/to/symfony2/data/protected.txt

此时,您将能够访问文件的内容(它使用 file_get_contents(),因此不要尝试将其用作下载管理器)。

那么如何限制对文件的访问呢?只需使用Symfony2内置的ACL系统:为路径 ^/protected.txt 配置您的 security.yml 即可完成。

货币转换

与Symfony2完全无关,但为了(我们的)方便,这里包含了一个货币转换器,它接受汇率并可以轻松地将一个货币金额转换为另一个货币。

<?php

use Namshi\UtilityBundle\Currency\Converter;
use Namshi\UtilityBundle\Currency\Currency;
use Namshi\UtilityBundle\Exception\CurrencyNotFound;

$conversionRates = array(
  'EUR' => array(
    'USD' => 1.3,
  ),
  'USD' => array(
    'AED' => 4,
    'EUR' => 0.7,
  ),
);

$converter = new Converter($conversionRates);

try {
    echo $converter->convert(12, Currency::UNITED_STATES_DOLLAR, Currency::EURO)
} catch (CurrencyNotFound $e) {
    echo "Yo boss, can ya provide conversion rates here?";
}