Зависит от того, насколько сложными будут ваши отношения родитель-ребенок.
Лучшее решение - написать собственный плагин или модуль для этого, с записями и правилами, некоторыми контроллерами ... и т. Д.
Мое решение будет следующим
Разрешить публичную регистрацию
Создать два user groups
:
Установите группу пользователей по умолчанию на Parent
Убедитесь, что группа пользователей Parent
имеет разрешение:
Назначить группы пользователей -> Назначить пользователей на «Дочерний» отмечен
Создайте field group
с одним полем в нем:
- parentId> number (точнее int)
Назначить эту группу полей пользователям
Создайте регистрационную форму внешнего пользователя для родителей, чтобы они могли зарегистрироваться.
И тогда вам понадобится еще одна форма для родителей, чтобы они могли зарегистрировать своих детей. Для этого родители должны войти в систему, иначе она не будет работать.
Вы можете проверить это с помощью
{% if not craft.app.user.isGuest %}
{# Your child registration form #}
<input type="hidden" id="parentId" name="parentId" value="{{ craft.app.user.id }}">
{% else %}
{# The user is not logged in #}
{% endif %}
Таким образом, вы можете:
- Различайте родительских пользователей от детей, используя:
{% set userGroups = craft.app.user.identity.getGroups() %}
- Получить зарегистрированный дочерний родительский объект пользователя, используя:
{% set parent = craft.users().id( craft.app.user.identity.parentId ).one()%}
- Получить в систему родителей родителей детей
{% set children = craft.users().parentId( craft.app.user.id ).all() %}