- A file structure strongly inspired by KnpLabs
- MongoDB document storage.
- Boomgo tiny Object Document Mapper.
- Console & Command aware of your Silex Application.
- i18n command to extract strings from twig.
- A custom Validator Service Provider wich allows Yaml validation & service injection
- An "unique" validator for Boomgo document using Boomgo service & custom validation.
- Basic user actions: signup, signin & recovery password.
- Basic security filter.
- Vendors installation
$ wget http://getcomposer.org/composer.phar
$ php composer.phar install
- Create the cache dir
$ mkdir cache cache/boomgo
$ chmod -R 777 cache src/Resources/locales
- Export twitter bootstrap assets
$ mkdir web/js/bootstrap
$ cp vendor/twitter/bootstrap/js/*.js web/js/bootstrap/
$ cp -R vendor/twitter/bootstrap/img web/
- Configuration
$ cp app/config.php.dist app/config.php
- Generate the mappers for Boomgo ODM, (It needs the right to write aside of the Document folder).
$ vendor/bin/boomgo generate:mappers /your_absolute_path_to/boomstone/src/Boomstone/Document
The application boot with app/bootstrap.php
.
This process requires a non-versioned app/config.php
, to easily switch between environments (dev, test, prod...):
<?php
require_once __DIR__.'/config.php';
// require_once __DIR__.'/config_dev.php';
// require_once __DIR__.'/config_test.php'
?>
Almost all code logic lives under the src/
path.
Boomstone provides console "a la Symfony" : php app/console
. The application aware command allows you to access your silex application.
<?php
use Boomstone\Command\ApplicationAwareCommand;
class MyCommand extends ApplicationAwareCommand
{
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->getApplication() // return the console application
$this->getApplication()->getSilexApplication(); // return your silex $app
$app['twig'] // return your twig instance for example.
}
}
?>
- Set a directory for your locales in the
app/config.php
. - Create sub directories for each locale used in your app:
locale_path/fr, locale_path/en
. - Ensure this directories are writable for your PHP process.
- Use the command.
php app/console i18n:update [locale]
php app/console i18n:update fr
php app/console i18n:update en
You do not need to worry about your previous translated strings. They will be always preserved. Yet this bring a limitation, actually old and unused strings are not removed.
You can use translation domains
{% trans from "homepage" %}Welcome dude !{% endtrans %}
{% trans from "error" %}Sorry, it's terrible.{% endtrans %}
This will output one file per domain
locale_path/fr/homepage.fr.xlf
locale_path/fr/error.fr.xlf
State of art, yet functionnal, this provider enables all the features of Symfony Validator Component:
- It eases usage of yml, xml loader for validation.
- It allows you to inject depedencies in your custom constraints/validator (like a database connection).
Check the config.php.dist configuration to see all the available options and the Validation/User.yml definition file.
An use-case of the custom Validator Service Provider which rely on Boomgo ODM to ensure the uniqueness one/many key(s) in MongoDB.
It's just a simple example, no Interface provided. See the before()
method in app/boomstone.php
.
<?php
$app->get('/', function () use ($app) {
// some logic
})->value('security', array('ROLE_MEMBER'));
?>
The main stylesheet is web/less/boomstone.less
, it import all the goodness from twitter bootstrap and is dedicated to your own rules. On MacOS, I recommend to use LESS.app: a dev tool which watch a less directory and recompile them on a file change.
- Improve I18n command.
- Add unit/functionnal test.
- Relax and get some PR from the open source community.
- Translator class used is a modified copy from Symfony\Component\Translation (because of scope constraint)
- The i18n command was tested only with Xliff format
- The i18n command won't remove old and unused string (yet it appear to put them at the end of the file)
- The i18n command won't extract string from controller and forms (should be manually writen)
- The Custom Validator service provider allows you to use the APC cache from the Symfony validator component, yet there is no built-in method to clear this cache, you'll have to do this manually.