diff --git a/DependencyInjection/Factory/GridFSAdapterFactory.php b/DependencyInjection/Factory/GridFSAdapterFactory.php new file mode 100644 index 0000000..b310562 --- /dev/null +++ b/DependencyInjection/Factory/GridFSAdapterFactory.php @@ -0,0 +1,47 @@ + + */ +class GridFSAdapterFactory implements AdapterFactoryInterface +{ + /** + * {@inheritDoc} + */ + public function create(ContainerBuilder $container, $id, array $config) + { + $container + ->setDefinition($id, new DefinitionDecorator('knp_gaufrette.adapter.gridfs')) + ->addArgument(new Reference($config['mongogridfs_id'])) + ; + } + + /** + * {@inheritDoc} + */ + public function getKey() + { + return 'gridfs'; + } + + /** + * {@inheritDoc} + */ + public function addConfiguration(NodeDefinition $node) + { + $node + ->children() + ->scalarNode('mongogridfs_id')->isRequired()->cannotBeEmpty()->end() + ->end() + ; + } +} diff --git a/README.markdown b/README.markdown index 68b2761..6be0562 100644 --- a/README.markdown +++ b/README.markdown @@ -141,7 +141,7 @@ A simple local filesystem based adapter. * `directory` The directory of the filesystem *(required)* * `create` Whether to create the directory if it does not exist *(default true)* -### Exemple +### Example ``` yaml # app/config/config.yml @@ -162,7 +162,7 @@ Almost as simple as the **local** adapter, but it encodes key to avoid having to * `directory` The directory of the filesystem *(required)* * `create` Whether to create the directory if it does not exist *(default true)* -### Exemple +### Example ``` yaml # app/config/config.yml @@ -182,7 +182,7 @@ Allows you to use a user defined adapter service. * `id` The id of the service *(required)* -### Exemple +### Example ``` yaml # app/config/config.yml @@ -203,7 +203,7 @@ Adapter for test purposes, it stores files in an internal array. The `files` is an array of files where each file is a sub-array having the `content`, `checksum` and `mtime` optional keys. -### Exemple +### Example ``` yaml # app/config/config.yml @@ -219,4 +219,46 @@ knp_gaufrette: mtime: 123456890123 ``` +## GridFS (gridfs) + +Allows you to use a gridfs as an adapter. + +### Parameters + + * `mongogridfs_id` The id of the service that provides MongoGridFS object instance for adapter *(required)* + +### Example + +``` yaml +# app/config/config.yml +knp_gaufrette: + adapters: + foo: + gridfs: + mongogridfs_id: acme_test.gridfs +``` + +In your AcmeTestBundle, add following service definitions: + +``` yaml +# src/Acme/TestBundle/Resources/config/services.yml +parameters: + acme_test.mongo.server: "mongodb://localhost:27017" + acme_test.mongo.options: + connect: true + acme_test.mongodb.name: "test_database" + acme_test.gridfs.prefix: "fs" #Default +services: + acme_test.mongo: + class: Mongo + arguments: [%acme_test.mongo.server%, %acme_test.mongo.options%] + acme_test.mongodb: + class: MongoDB + arguments: [@acme_test.mongo, %acme_test.mongodb.name%] + acme_test.gridfs: + class: MongoGridFS + arguments: [@acme_test.mongodb, %acme_test.gridfs.prefix%] +``` + + [gaufrette-homepage]: https://github.com/knplabs/Gaufrette diff --git a/Resources/config/adapter_factories.xml b/Resources/config/adapter_factories.xml index 449b21a..3de8c03 100644 --- a/Resources/config/adapter_factories.xml +++ b/Resources/config/adapter_factories.xml @@ -23,6 +23,9 @@ + + + diff --git a/Resources/config/gaufrette.xml b/Resources/config/gaufrette.xml index 2d9b800..6aabbd1 100644 --- a/Resources/config/gaufrette.xml +++ b/Resources/config/gaufrette.xml @@ -21,6 +21,7 @@ +