Flarum: отношение пользователя на странице «/ settings»

Я добавил новое отношение «известные языки» к пользователю и хочу показать его на странице настроек.
В общем случае это работает:

введите описание изображения здесь

Но не стабильный: например список пуст после обновления страницы «/ настройки». Но он будет иметь данные, нажмите Flarum и затем снова admin -> settings.

Может ли кто-нибудь помочь мне решить проблему.

<?php namespace FlarpalTeam\FlarpalAuth\Listener;

use FlarpalTeam\FlarpalAuth\Api\Serializer\KnownLanguageSerializer;
use FlarpalTeam\FlarpalAuth\Language;
use Flarum\Core\User;

use Flarum\Api\Serializer\CurrentUserSerializer;
use Flarum\Api\Serializer\UserBasicSerializer;
use Flarum\Api\Serializer\UserSerializer;

use Flarum\Event\ConfigureApiController;
use Flarum\Event\GetApiRelationship;
use Flarum\Event\GetModelRelationship;
use Illuminate\Contracts\Events\Dispatcher;class AddKnowLanguagesRelationship
{
/**
* @param Dispatcher $events
*/
public function subscribe(Dispatcher $events)
{
$events->listen(GetModelRelationship::class, [$this, 'getKnownLanguagesModelRelationship']);
$events->listen(GetApiRelationship::class, [$this, 'getKnownLanguagesApiRelationship']);
$events->listen(ConfigureApiController::class, [$this, 'includeKnownLanguages']);
}

/**
* @param GetModelRelationship $event
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany|null
*/
public function getKnownLanguagesModelRelationship(GetModelRelationship $event)
{
if ($event->isRelationship(User::class, 'knownLanguages')) {
return $event->model
->belongsToMany(
Language::class,
'users_languages',
'user_id',
'language_id',
'knownLanguages'
)->withPivot(['native']);
}
}

/**
* @param GetApiRelationship $event
* @return \Tobscure\JsonApi\Relationship|null
*/
public function getKnownLanguagesApiRelationship(GetApiRelationship $event)
{
if ($event->model instanceof User && $event->relationship == 'knownLanguages') {
return $event->serializer->hasMany($event->model, KnownLanguageSerializer::class, 'knownLanguages');
}
}

/**
* @param ConfigureApiController $event
*/
public function includeKnownLanguages(ConfigureApiController $event)
{

if (in_array($event->controller->serializer, [
UserBasicSerializer::class,
UserSerializer::class,
CurrentUserSerializer::class
])) {
$event->addInclude('knownLanguages');
}
}
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]