Кажется, что оператор $in
отлично выполнит ваши цели.
Вы могли бы сделать что-то вроде этого (псевдо-запрос):
if (db.courses.find({"students" : {"$in" : [studentId]}, "course" : courseId }).count() > 0) {
// student is enrolled in class
}
В качестве альтернативы вы можете удалить предложение "course" : courseId
и вернуть набор всех классов, в которые учащийся участвовал.
Полагаю, это правильное поведение, поскольку вы можете иметь несколько ошибок для одного поля, например «Имя пользователя слишком короткое» и «Имя пользователя поля содержит недопустимые символы», но для получения только первой ошибки вы можете использовать:
[ 110]Или вы можете настроить рендеринг form_errors, сначала создайте файл для form_errors, например your_form / custom_form_errors.html.twig:
{% block form_errors %}
{% spaceless %}
<div class="error">{{ errors|first }}</div>
{% endspaceless %}
{% endblock %}
И после этого включите его в файл представления: [115 ]
{% form_theme form 'your_form/custom_form_errors.html.twig' %}
...
{{ form_errors(registrationForm.username) }}
просто чтобы расширить ответ @Andrii Filenko. Вы можете довольно легко изменить вывод функции form_errors
или любой другой формы. в Symfony это называется пользовательские темы.
Рассмотрим это:
// templates/register.html.twig
{% extends "base.html.twig" %}
{% form_theme registrationForm _self %}
{% block form_errors %}
{% spaceless %}
{% if errors|length > 0 %}
<ul class="changed list">
{% for error in errors %}
<li>{{ error.message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endspaceless %}
{% endblock form_errors %}
{% block body %}{% endblock %}
Вывод:
<ul class="changed list"><li> Username already exists </li></ul>