Skip to content
Snippets Groups Projects
README.md 1.52 KiB
Newer Older
# DbpRelayBaseCourseBundle
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
[GitLab](https://gitlab.tugraz.at/dbp/relay/dbp-relay-base-course-bundle)
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
## Integration into the Relay API Server
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed

* Add the bundle package as a dependency:

Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
```
composer require dbp/relay-base-course-bundle
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
```

* Add the bundle to your `config/bundles.php`:

```php
...
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
Dbp\Relay\BasePersonBundle\DbpRelayBaseCourseBundle::class => ['all' => true],
...
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
];
```

* Run `composer install` to clear caches

Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
## Course provider implementation
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed

Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
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.
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed

Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
### Example
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed

Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
#### Service class
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed

Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
For example, create a service `src/Service/CourseProvider.php`:
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed

Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
```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;
    }
    
    ...
}
```
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed

Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
#### Services configuration
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed

Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
For the example service above you need to add the following to your `src/Resources/config/services.yaml`:
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed

Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
```yaml
  Dbp\Relay\BaseCourseBundle\API\CourseProviderInterface:
    '@App\Service\CourseProvider'
Tobias Gross-Vogt's avatar
Tobias Gross-Vogt committed
```