The stock Symfony2 timezone field type organizes all of the Olson Timezone Identifiers in PHP by Continent and displays them to the user. This dropdown is pretty bad from a UI perspective. This bundles provides an alternate dropdown that is similar to the one found when choosing a time zone on a Windows computer.
This is my first symfony2 bundle, feedback welcome!
Edit your deps
file and add the following:
[BertTimezoneBundle]
git=git://github.com/bertrandom/BertTimezoneBundle.git
target=/bundles/Bert/TimezoneBundle
Run the vendors install script:
bin/vendors install
This will pull down the latest version of this bundle from github. Alternatively you can just put the files in /vendor/bundles/Bert/TimezoneBundle
Next, add the namespace to the end of the registerNamespaces
bit in autoload.php
:
$loader->registerNamespaces(array( 'Symfony' => array(__DIR__.'/../vendor/symfony/src', __DIR__.'/../vendor/bundles'), 'Sensio' => __DIR__.'/../vendor/bundles', . . . 'Bert' => __DIR__.'/../vendor/bundles', ));
Add the bundle in AppKernel.php
:
$bundles = array( new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), new Symfony\Bundle\SecurityBundle\SecurityBundle(), . . . new Bert\TimezoneBundle\BertTimezoneBundle(), );
That's it, the field type should be ready to use.
Simply use the field type readabletimezone
in your form builder, e.g.:
$builder ->add('username') ->add('plainPassword', 'repeated', array('type' => 'password')) ->add('firstname') ->add('lastname') ->add('email', 'email') ->add('timezone', 'readabletimezone') ;
The data is taken from the work of two blog posts on the subject of readable timezones:
Presenting a list of Timezones to the user
Olson Time Zone Database to Standard Windows Time Zone v0.1
I've made mirrors of these two posts and put them in Resources/source/mirrors/
in case the blog posts go away.
The timezone data itself can be found in Resources/config/timezones.yml
Bertrand Fan ([email protected]
)
Timezone data provided by Avi Block and Tim Davis, see Data section for more details.