dbp/relay-base-course-connector-campusonline-bundle

v0.1.19 2024-07-15 08:54 UTC

README

GitHub | Packagist

Test

DBP Relay API 服务器用于 CampusOnline 课程集成的基础 Symfony 扩展包

集成到 Relay API 服务器

  • 将扩展包包作为依赖项添加
composer require dbp/relay-base-course-connector-campusonline-bundle
  • 将扩展包添加到您的 config/bundles.php
...
Dbp\Relay\BasePersonBundle\DbpRelayBaseCourseBundle::class => ['all' => true],
Dbp\Relay\BasePersonBundle\DbpRelayBaseCourseConnectorCampusonlineBundle::class => ['all' => true],
...
  • 运行 composer install 以清除缓存

配置

该扩展包有一些配置值,您可以在应用程序中指定,无论是通过硬编码还是通过引用环境变量。

为此,在应用程序中创建 config/packages/dbp_relay_base_course_connector_ldap.yaml,内容如下

dbp_relay_base_course_connector_campusonline:
  campus_online:
    api_token: '%env(CAMPUS_ONLINE_API_TOKEN)%'
    api_url: '%env(CAMPUS_ONLINE_API_URL)%'
    org_root_id: '%env(ORGANIZATION_ROOT_ID)%'

有关扩展包配置的更多信息,请参阅 https://symfony.com.cn/doc/current/bundles/configuration.html

事件

CoursePostEvent

此事件允许您向您希望包含在对 \Dbp\Relay\BaseCourseBundle\Entity\Course 基本实体请求的响应中包含的额外属性("本地数据")添加到 \Dbp\Relay\RelayBaseCourseConnectorCampusonlineBundle\Event\CourseProviderPostEvent 实例中。事件订阅者接收一个包含 Course 基本实体和由 Campusonline 提供的课程数据的实例。

例如,创建一个事件订阅者 src/EventSubscriber/CourseEventSubscriber.php

<?php
namespace App\EventSubscriber;

use Dbp\Relay\BaseCourseConnectorCampusonlineBundle\Event\CoursePostEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class CourseEventSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        return [
            CoursePostEvent::NAME => 'onPost',
    ];
    }

    public function onPost(CoursePostEvent $event)
    {
        $course = $event->getCourse();
        $courseData = $event->getCourseData();
        $course->trySetLocalDataValue('code', $courseData->getCode());
    }
}

并将其添加到您的 src/Resources/config/services.yaml

App\EventSubscriber\CourseEventSubscriber:
  autowire: true
  autoconfigure: true