{% extends 'App::V2/base.html.twig' %} {% set firstName %} {% if profile.user.device == 'ANDROID' %} {{ profile.lastname|default('')|trim|upper }} {% else %} {{ profile.firstname|default('')|trim|lower|capitalize}} {% endif %} {% endset %} {% set lastName %} {% if profile.user.device == 'ANDROID' %} {{ profile.firstname|default('')|trim|lower|capitalize}} {% else %} {{ profile.lastname|default('')|trim|upper }} {% endif %} {% endset %} {% set teacherName = (firstName ~ ' ' ~ lastName)|trim %} {% set city = profile.city|default('') %} {% set postalCode = profile.department|default('') %} {% set country = profile.country|default('FR')|upper %} {% set cleanContent = profile.content|default('')|trim %} {% set bio = cleanContent ? (cleanContent|length > 220 ? cleanContent|slice(0, 220) ~ '...' : cleanContent) : 'Annonces de cours particuliers sur RueduProf.' %} {% set longBio = cleanContent ?: 'Annonces de cours particuliers sur RueduProf.' %} {% set avatar = (profile.avatar is defined and profile.avatar and profile.avatar.path is defined and profile.avatar.path) ? 'https://www.rueduprof.com/uploads/avatar/' ~ profile.avatar.path : null %} {% set subjects = [] %} {% set levels = [] %} {% set modes = [] %} {% set pricing = [] %} {% set priceFrom = null %} {% for item in profile.categories|default([]) %} {% if item.category is defined and item.category and item.category.name is defined and item.category.name and item.category.name not in subjects %} {% set subjects = subjects|merge([item.category.name]) %} {% endif %} {% if item.pricePerHour is defined and item.pricePerHour is not null %} {% if priceFrom is null or item.pricePerHour < priceFrom %} {% set priceFrom = item.pricePerHour %} {% endif %} {% endif %} {% if item.primaire is defined and item.primaire and 'Primaire' not in levels %} {% set levels = levels|merge(['Primaire']) %} {% endif %} {% if item.college is defined and item.college and 'Collège' not in levels %} {% set levels = levels|merge(['Collège']) %} {% endif %} {% if item.lycee is defined and item.lycee and 'Lycée' not in levels %} {% set levels = levels|merge(['Lycée']) %} {% endif %} {% if item.superieur is defined and item.superieur and 'Supérieur' not in levels %} {% set levels = levels|merge(['Supérieur']) %} {% endif %} {% if item.webcam is defined and item.webcam and 'En ligne' not in modes %} {% set modes = modes|merge(['En ligne']) %} {% endif %} {% if item.outPlace is defined and item.outPlace and 'À domicile' not in modes %} {% set modes = modes|merge(['À domicile']) %} {% endif %} {% if item.inPlace is defined and item.inPlace and 'Chez le professeur' not in modes %} {% set modes = modes|merge(['Chez le professeur']) %} {% endif %} {% set noteParts = [] %} {% if item.webcam is defined and item.webcam %} {% set noteParts = noteParts|merge(['En ligne']) %} {% endif %} {% if item.outPlace is defined and item.outPlace %} {% set noteParts = noteParts|merge(['À domicile']) %} {% endif %} {% if item.inPlace is defined and item.inPlace %} {% set noteParts = noteParts|merge(['Chez le professeur']) %} {% endif %} {% if item.category is defined and item.category and item.category.name is defined %} {% set pricing = pricing|merge([{ 'label': item.category.name, 'price': (item.pricePerHour is defined and item.pricePerHour is not null) ? item.pricePerHour ~ '€ / h' : 'Sur demande', 'description': item.content, 'note': noteParts|join(' · ') }]) %} {% endif %} {% endfor %} {% set headline = subjects|length ? 'Professeur de ' ~ subjects|slice(0, 3)|join(' et ') ~ (levels|length ? ' · ' ~ levels|join(', ') : '') : 'Professeur particulier' %} {% set zones = [] %} {% if city %} {% set zones = zones|merge([postalCode ? city ~ ' (' ~ postalCode ~ ')' : city]) %} {% endif %} {% set teacher = teacher|default({ 'first_name': firstName ?: 'Professeur', 'last_name': lastName ?: '', 'headline': headline, 'city': city ?: postalCode, 'price_from': priceFrom ?? 0, 'rating': null, 'reviews_count': 0, 'students_count': 0, 'response_time': null, 'experience_years': null, 'verified': false, 'bio': bio, 'long_bio': longBio, 'avatar': avatar, 'teaches': subjects, 'levels': levels, 'modes': modes, 'zones': zones, 'languages': country == 'FR' ? ['Français'] : [], 'badges': [], 'highlights': [], 'pricing': pricing, 'availability': [], 'reviews': [], 'faq': [] }) %} {% set teacher_full_name = (teacher.first_name|trim ~ ' ' ~ teacher.last_name)|trim %} {% set teacher_headline = teacher.headline|lower %} {% set teacher_price = teacher.price_from %} {% set seoTitle %}Cours particuliers avec {{ teacher_full_name|trim }} à {{ city }} ({{ postalCode }}){% endset %} {% set seoUrl %}https://www.rueduprof.com/{{ profile.id ~ '/professeur-' ~ profile.department ~ '-' ~ (profile.firstname|myslugify) ~ '-' ~ (profile.lastname|first|myslugify) ~ '/' }}{% endset %} {# {% set seoDescription %}Découvrez le profil de {{ teacher_full_name|trim }}, {{ teacher_headline|trim }}, {% if teacher_price %}à partir de {{ teacher_price }}€.{% else %}sur RueduProf.{% endif %}{% endset %} #} {% block meta_title %}{{seoTitle}}{% endblock %} {% set seoDescription %} {%- if profile.content -%} {%- if profile.content|length > 155 -%} {{- profile.content|slice(0, 155)|raw -}}... {%- else -%} {{- profile.content|raw -}} {%- endif -%} {%- else -%} Découvrez le profil de {{ teacher_full_name|trim }}, {{ teacher_headline|trim }}, {% if teacher_price %}à partir de {{ teacher_price }}€.{% else %}sur RueduProf.{% endif %} {%- endif -%} {% endset %} {% block meta_description %} {{- seoDescription -}} {% endblock %} {% block canonical %}{{seoUrl}}{% endblock %} {% block open_graph %} {% endblock %} {% block twitter_card %} {% endblock %} {% block snippet_json %} {% include 'App::schema/profile_show_user.html.twig' with { profile: profile } only %} {% endblock %} {% block body %}
{% set flashes = app.session.flashbag.all() %} {% for type, messages in flashes %} {% for message in messages %} {% if type == 'success' %}
Message envoyé

Votre demande a bien été transmise

{{ message }}

Votre demande a été prise en compte
Le professeur peut vous répondre rapidement
Vos informations ont bien été transmises
{% else %} {% endif %} {% endfor %} {% endfor %}
{% if teacher.avatar %} {{ teacher.first_name }} {{ teacher.last_name|first }}. {% else %}
{{ teacher.first_name|slice(0,1) }}{{ teacher.last_name|slice(0,1) }}
{% endif %}
{% for badge in teacher.badges %} {{ badge }} {% endfor %} {% if teacher.verified %} Profil vérifié {% endif %}

{{ teacher.first_name }} {{ teacher.last_name|first }}.

{{ teacher.headline }}

{{ teacher.city }}

{{ teacher.bio }}

{% for subject in teacher.teaches %} {{ subject }} {% endfor %}
À propos

{{ teacher.headline }}

{{ teacher.long_bio|raw|nl2br }}

Informations clés

Matières, niveaux et modalités

Matières
{% for subject in teacher.teaches %} {{ subject }} {% endfor %}
Niveaux

{{ teacher.levels|join(' · ') }}

Lieu du cours

{{ teacher.modes|join(' · ') }}

Zones desservies

{{ teacher.zones|join(' · ') }}

Langues

{{ teacher.languages|join(' · ') }}

Tarifs

Tarifs par matière

{% for item in teacher.pricing %}
{{ item.label }}
{{ item.price }}
{% if item.note %}

{{ item.note }}

{% endif %} {% if item.description %}

{{ item.description }}

{% endif %}
{% endfor %}
{# Les modales sont en dehors de la grille #} {% for item in teacher.pricing %} {% if item.description %} {% endif %} {% endfor %} {#
Disponibilités

Créneaux visibles rapidement

{% for slot in teacher.availability %}
{{ slot.day }}
{% for hour in slot.slots %} {{ hour }} {% endfor %}
{% endfor %}
#} {#
Avis

Ce que disent les élèves et les parents

{% for review in teacher.reviews %}
{{ review.author }} {% for i in 1..review.rating %} {% endfor %}

“{{ review.text }}”

{% endfor %}
FAQ

Questions fréquentes

{% for item in teacher.faq %}

{{ item.a }}
{% endfor %}
#}
Envoyer une demande
{{ form_start(form_message, {'attr': {'class': 'vstack gap-3', 'id': 'contact-form'}}) }} {{ form_errors(form_message) }}
{{ form_label(form_message.email, 'Email', {'label_attr': {'class': 'form-label'}}) }} {{ form_widget(form_message.email, { 'attr': { 'class': 'form-control form-control-lg rounded-4', 'placeholder': 'Votre email' } }) }} {{ form_errors(form_message.email) }}
{{ form_widget(form_message.mobile, { 'attr': { 'id': 'inputError1', 'class': 'form-control form-control-lg rounded-4', 'placeholder': 'Votre numéro de mobile' } }) }} {{ form_errors(form_message.mobile) }}
{{ form_widget(form_message.category, { 'attr': { 'class': 'form-select form-select-lg rounded-4 ui-select' } }) }} {{ form_errors(form_message.category) }}
{{ form_widget(form_message.level, { 'attr': { 'class': 'form-select form-select-lg rounded-4 ui-select' } }) }} {{ form_errors(form_message.level) }}
{{ form_label(form_message.message, 'Votre besoin', {'label_attr': {'class': 'form-label'}}) }} {{ form_widget(form_message.message, { 'attr': { 'rows': 4, 'class': 'form-control rounded-4', 'placeholder': 'Exemple : remise à niveau en maths pour une élève de seconde, 2 séances par semaine...' } }) }} {{ form_errors(form_message.message) }}
{{ form_widget(form_message.recaptcha, { 'attr': { 'options': { 'theme': 'light', 'type': 'image', 'size': 'normal' } } }) }} {{ form_errors(form_message.recaptcha) }}
{# #} {{ form_end(form_message) }}
Cours particuliers à domicile ({% if location and location.city != NULL %}{{ location.zipcode }}{% else %}75{% endif %})

{% for itemCategory in profile.categories %} {% set preposition = itemCategory.category.name|first|lower in ['a', 'e', 'i', 'o', 'u'] ? "d'" : ' de ' %} {% if location %} {% if itemCategory.category.type and itemCategory.category.type == 'formations' %}

{% else %} {% endif %} {% else %} {% if itemCategory.category.type and itemCategory.category.type == 'formations' %} {% else %} {% endif %} {% endif %} {% endfor %}

Cours particuliers en ligne

{% for itemCategory in profile.categories %} {% set preposition = itemCategory.category.name|first|lower in ['a', 'e', 'i', 'o', 'u'] ? "d'" : ' de ' %} {% if itemCategory.category.type and itemCategory.category.type == 'formations' %}

{% else %} {% endif %} {% endfor %}

{% if profile.categories.count > 0 %} {% set category = profile.categories.first.category %} {% set subjectPrefix = category.slug == 'coach-sportif' ? '' : (category.name|first|lower in ['a','e','i','o','u','h'] ? "d'" : 'de ') %} {% set subjectName = category.name %} {% if premia is defined and premia|length > 0 %}
D’autres professeurs pourraient vous intéresser

{% for key, item in premia %} {% if item.profile.user.id != 1 or (app.user and app.user.roles[0] == 'ROLE_SUPER_ADMIN') %} {% set profile = item.profile %} {% set user = profile.user %} {% set avatar = profile.avatar %} {% set isAndroid = user.device == 'ANDROID' %} {% set displayName = (profile.firstname and profile.lastname and not isAndroid) ? profile.firstname ~ ' ' ~ profile.lastname|first ~ '.' : profile.lastname ~ ' ' ~ profile.firstname|first ~ '.' %} {% set profileUrl = path('app_profile_user_show', { id: profile.id, slug: 'professeur-' ~ profile.department ~ '-' ~ profile.firstname|myslugify ~ '-' ~ profile.lastname|first|myslugify }) %} {% set adUrl = path('app_profileCategory_show', { profile: profile.id, slug: 'professeur-' ~ profile.department ~ '-' ~ profile.firstname|myslugify ~ '-' ~ profile.lastname|first|myslugify, skill: category.slug, id: item.id }) %} {% include 'App::Category/_teacher_card.html.twig' with { is_premium: true, item: item, category: category, subjectPrefix: subjectPrefix, subjectName: subjectName, location: location, card_variant: 'show' } only %} {% endif %} {% endfor %}

{% endif %} {% endif %}
{{ teacher.price_from }}€/h
{{ teacher.response_time }}
Contacter
{% endblock %}