NAMSHI | UtilityBundle
This bundle provides some basic, silly utilities
that we use across our Symfony2 applications., (*1)
Installation
The bundle can be easily installed via
composer ("namshi/utility-bundle": "dev-master"
)., (*2)
More informations available on
Packagist., (*3)
Then enable it in the AppKernel.php
:, (*4)
``` php
new Namshi\UtilityBundle\NamshiUtilityBundle(),, (*5)
## Doctrine CommaSeparatedList type
If you want to persist an array into the
DB as a list of comma-separated strings (ie.
to be able to execute [FIND_IN_SET](http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set))
you can simply use the `Namshi\UtilityBundle\ORM\Type\CommaSeparatedList`
type.
Remember to register it inside Symfony2's `config.yml`:
doctrine:
dbal:
types:
comma_separated_list: Namshi\UtilityBundle\ORM\Type\CommaSeparatedList, (*6)
and then use it on your entities:
``` php
/**
* @var array
*
* @ORM\Column(name="tags", type="comma_separated_list", nullable=true)
*/
protected $tags = array();
File serving with authentication
One of the utilities that you can take
advantage of is file serving, mixing it
with authentication., (*7)
Suppose you have a file, protected.txt
,
in /path/to/symfony2/data/protected.txt
and you want only some users to be able
to access it., (*8)
You just have to enable a route that tells
the bundle which file to serve:, (*9)
``` yml
protected_file:
pattern: /protected.txt
defaults: { _controller: NamshiUtilityBundle:Default:serveFile, file: protected.txt }, (*10)
and define the file path in the `parameters.yml`:
``` yml
namshi_utility.files.protected.txt: /path/to/symfony2/data/protected.txt
At that point you will be able to access the
content of the file (it uses file_get_contents()
, so
don't try using this utility as a download manager)., (*11)
How to restrict access to the file then? Simply use
the built-in ACL system that you have in Symfony2:
configure your security.yml
for the path ^/protected.txt
and you're done., (*12)
Currency conversion
Totally unrelated to Symfony2, but included here for (our) conveniency,
there is a currency converter that accepts conversion rates
and can be used to easily convert an amount from a currency to
another one., (*13)
``` php
<?php, (*14)
use Namshi\UtilityBundle\Currency\Converter;
use Namshi\UtilityBundle\Currency\Currency;
use Namshi\UtilityBundle\Exception\CurrencyNotFound;, (*15)
$conversionRates = array(
'EUR' => array(
'USD' => 1.3,
),
'USD' => array(
'AED' => 4,
'EUR' => 0.7,
),
);, (*16)
$converter = new Converter($conversionRates);, (*17)
try {
echo $converter->convert(12, Currency::UNITED_STATES_DOLLAR, Currency::EURO)
} catch (CurrencyNotFound $e) {
echo "Yo boss, can ya provide conversion rates here?";
}
```, (*18)