From 11182e10d002dc50488b8d2be38fa691ea07f3b2 Mon Sep 17 00:00:00 2001 From: Tobias Gross-Vogt <tgros@tugraz.at> Date: Thu, 24 Mar 2022 09:20:16 +0100 Subject: [PATCH] README --- README.md | 107 +++++++++++++++++++++--------------------------------- 1 file changed, 41 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index 5199a89..80679b8 100644 --- a/README.md +++ b/README.md @@ -1,92 +1,67 @@ # DbpRelayBaseCourseBundle +[GitLab](https://gitlab.tugraz.at/dbp/relay/dbp-relay-base-course-bundle) -This Symfony bundle can be used as a template for creating new bundles for the -DBP Relay project. -When including this bundle into your API server it will gain the following -features: - -* A custom `./bin/console` command -* An example entity -* Various HTTP methods implemented for that entity - -## TL;DR - -The quickest way to make use of this template bundle is to feed your desired names -to one command and generate a ready-to-use bundle with the correct naming. - -See [Generate DBP Symfony bundle](https://dbp-demo.tugraz.at/dev-guide/relay/naming/#generate-dbp-symfony-bundle) for more information. - -## Using the Bundle as a Template - -* Copy the repo contents -* Adjust the package name in `composer.json`, in this example we'll pretend you named your bundle `dbp/relay-your-bundle` -* Invent a new PHP namespace and adjust it in all PHP files -* Rename `src/DbpRelayBaseCourseBundle` and `DependencyInjection/DbpRelayCourseExtension` to match the new project name - -## Integration into the API Server - -* Push your bundle on a git server, in this example we'll use `git@gitlab.tugraz.at:dbp/relay/dbp-relay-your-bundle.git` -* Add the repository to your composer.json (as soon as you published your bundle to [Packagist](https://packagist.org/) - you can remove that block again): - -```json - "repositories": [ - { - "type": "vcs", - "url": "git@gitlab.tugraz.at:dbp/relay/dbp-relay-your-bundle.git" - } - ], -``` +## Integration into the Relay API Server * Add the bundle package as a dependency: -```bash -composer require dbp/relay-your-bundle=dev-main +``` +composer require dbp/relay-base-course-bundle ``` * Add the bundle to your `config/bundles.php`: ```php ... -Dbp\Relay\YourBundle\DbpRelayYourBundle::class => ['all' => true], -DBP\API\CoreBundle\DbpCoreBundle::class => ['all' => true], +Dbp\Relay\BasePersonBundle\DbpRelayBaseCourseBundle::class => ['all' => true], +... ]; ``` * Run `composer install` to clear caches -## Configuration - -The bundle has a `example_config` configuration value that you can specify in your -app, either by hard-coding it, or by referencing an environment variable. +## Course provider implementation -For this create `config/packages/dbp_relay_course.yaml` in the app with the following -content: +For this bundle to work you need to add a service that implements the +[CourseProviderInterface](https://gitlab.tugraz.at/dbp/relay/dbp-relay-base-course-bundle/-/blob/main/src/API/CourseProviderInterface.php) +to your application. -```yaml -dbp_relay_course: - example_config: 42 - # example_config: '%env(EXAMPLE_CONFIG)%' -``` +### Example -The value gets read in `DbpRelayCourseExtension` (your extension will be named differently) -and passed when creating the `MyCustomService` service. +#### Service class -For more info on bundle configuration see [Symfony bundles configuration](https://symfony.com/doc/current/bundles/configuration.html). +For example, create a service `src/Service/CourseProvider.php`: -## Development & Testing - -* Install dependencies: `composer install` -* Run tests: `composer test` -* Run linters: `composer run lint` -* Run cs-fixer: `composer run cs-fix` +```php +<?php + +namespace App\Service; + +use Dbp\Relay\BaseCourseBundle\API\CourseProviderInterface; +use Dbp\Relay\BaseCourseBundle\Entity\Course; + +class CourseProvider implements CourseProviderInterface +{ + public function getCourseById(string $identifier, array $options = []): ?Course + { + $course = new Course(); + $course->setIdentifier($identifier); + $course->setName('Field Theory'); + $course->setDescription('News from field theory'); + + return $course; + } + + ... +} +``` -## Bundle dependencies +#### Services configuration -Don't forget you need to pull down your dependencies in your main application if you are installing packages in a bundle. +For the example service above you need to add the following to your `src/Resources/config/services.yaml`: -```bash -# updates and installs dependencies from dbp/relay-your-bundle -composer update dbp/relay-your-bundle +```yaml + Dbp\Relay\BaseCourseBundle\API\CourseProviderInterface: + '@App\Service\CourseProvider' ``` -- GitLab