Skip to content
Snippets Groups Projects
Commit 11182e10 authored by Tobias Gross-Vogt's avatar Tobias Gross-Vogt
Browse files

README

parent 42f7c638
Branches
Tags
No related merge requests found
# DbpRelayBaseCourseBundle # 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 ## Integration into the Relay API Server
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"
}
],
```
* Add the bundle package as a dependency: * 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`: * Add the bundle to your `config/bundles.php`:
```php ```php
... ...
Dbp\Relay\YourBundle\DbpRelayYourBundle::class => ['all' => true], Dbp\Relay\BasePersonBundle\DbpRelayBaseCourseBundle::class => ['all' => true],
DBP\API\CoreBundle\DbpCoreBundle::class => ['all' => true], ...
]; ];
``` ```
* Run `composer install` to clear caches * Run `composer install` to clear caches
## Configuration ## Course provider implementation
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.
For this create `config/packages/dbp_relay_course.yaml` in the app with the following For this bundle to work you need to add a service that implements the
content: [CourseProviderInterface](https://gitlab.tugraz.at/dbp/relay/dbp-relay-base-course-bundle/-/blob/main/src/API/CourseProviderInterface.php)
to your application.
```yaml ### Example
dbp_relay_course:
example_config: 42
# example_config: '%env(EXAMPLE_CONFIG)%'
```
The value gets read in `DbpRelayCourseExtension` (your extension will be named differently) #### Service class
and passed when creating the `MyCustomService` service.
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 ```php
<?php
* Install dependencies: `composer install`
* Run tests: `composer test` namespace App\Service;
* Run linters: `composer run lint`
* Run cs-fixer: `composer run cs-fix` 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 ```yaml
# updates and installs dependencies from dbp/relay-your-bundle Dbp\Relay\BaseCourseBundle\API\CourseProviderInterface:
composer update dbp/relay-your-bundle '@App\Service\CourseProvider'
``` ```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment