Twig Extensions (Optional): You might use Twig extensions for more advanced template logic or functionalities.
Styling and JavaScript (Optional): Include CSS and JavaScript files to style and add interactivity to your page.
Routing and Navigation: Link to your page from other parts of your application using Symfony’s routing system, or through HTML anchors ( tags).
Testing: Test your page to ensure it renders correctly and functions as expected.
i will put the basci page for eche role:
first of all the contact page you can add it in all roles:
Contact:
{% extends 'adminbase.html.twig' %}
{% block title %}Hello BezoekerController!{% endblock %}
{% block content %}
<div class="row">
<div class="col-sm-6 d-none d-sm-block">
<p><h5>Rijschool ‘Vierkante wielen’ van Wim de Bie</h5><br>
Oostbuurtseweg 44-46
2678 LS De Lier<br>
0174 – 516549<br>
[email protected]
</p>
</div>
<div class="col-sm-6 d-none d-sm-block">
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2457.488034862776!2d4.279061100000001!3d51.979757899999996!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47c5b37df4d1dc59%3A0xbb39261ab3f326ab!2sOostbuurtseweg%2044%2C%202678%20LS%20De%20Lier!5e0!3m2!1snl!2snl!4v1683624830852!5m2!1snl!2snl" width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
<div class="col-sm-6 d-none d-sm-block">
<h5>Openingstijden</h5>
Maandag t/m vrijdag
08.30 tot 17.00<br>
Zaterdag & zondag
Gesloten
</div>
</div>
{% endblock %}
then the admin can add an massage to the instructur:
{% extends 'adminbase.html.twig' %}
{% block title %}New Mededelingen{% endblock %}
{% block content %}
<h1>Create new Mededelingen</h1>
{{ include('admin/_form.html.twig') }}
{% endblock %}
then the admin can add a new instructur:
{% extends 'adminbase.html.twig' %}
{% block title %}New Instructeur{% endblock %}
{% block content %}
<h1>Create new Instructeur</h1>
{{ include('admin/_form.html.twig') }}
{# <a href="{{ path('app_user_index') }}">back to list</a>#}
{% endblock %}
not forgit the normal page form the admin:
{% extends 'adminbase.html.twig' %}
{% block title %}Hello AdminController!{% endblock %}
{% block content %}
<br>
<section>
{# inside the for loop put this#}
{#{% if 'ROLE_MEMBER' in user.getRoles(true) %}#}
<h5>Je kunt menubolk gebruiken om te kiezen wat je wilt doen</h5>
</section>
{% endblock %}
als the form:
{{ form_start(form) }}
{{ form_widget(form) }}
<button class="btn btn-primary">{{ button_label|default('Save') }}</button>
{{ form_end(form) }}
users
now we going to visters.
normal page vist:
{% extends 'bezoekerbase.html.twig' %}
{% block title %}Hello BezoekerController!{% endblock %}
{% block content %}
<br>
<section>
De dienst heeft betreking op het zichtbaar zijn voor bezoekers, service bieden aan leerlingen en de instructeurs voorzien van de juiste informatie
over de leerlingen.
Er zijn vier instructeurs in dienst en er is een wagenpark van dire auto's, waarvan twee elektrische auto's.
Er is een eigenaar .De doelgroep van de klant zijn jongeren met een fysieke beperking zonder rijbewijs en dit toch graag willen halen.
</section>
{% endblock %}
add roles to you webapp:
{% extends 'bezoekerbase.html.twig' %}
{% block title %}Hello BezoekerController!{% endblock %}
{% block content %}
<br>
<section>
<h1>Algemene voorwaarden</h1>
<ul>
<h5>ARTIKEL 1 Verplichtingen van de autorijschool</h5>
<li>
1.1
De leerling krijgt praktijkles van een instructeur die aan de eisen voldoet van de Wet Rijonderricht Motorrijtuigen (WRM). De instructeur is in het bezit van een geldig ‘instructeurcertificaat’.
</li>
<li>
1.2
Het rijexamen wordt door de rijschool binnen twee weken gereserveerd nadat je de examenkosten betaald hebt.
</li>
<li>
1.3
De leerling legt het rijexamen in principe af met de auto waarin de rijlessen zijn gegeven. In geval van overmacht kan het echter gebeuren dat de leerling het examen aflegt in een vervangende lesauto.
</li>
<li>
1.4
De rijles wordt volledig benut door de leerling.
</li>
<li>
1.5
De Rijschool heeft voor het geval er iets gebeurt waarvoor zij ten opzichte van jou aansprakelijk is een goede bedrijfsverzekering afgesloten.
</li>
<li>
1.6
Indien de lessen niet door kunnen gaan als gevolg van ziekte van de instructeur of een ongeval, weer- en/of verkeersomstandigheden wordt de leerling hiervan tijdig op de hoogte gesteld en wordt er een nieuwe afspraak gemaakt of een vervangende instructeur ingezet. De leerling kan in zo’n geval geen aanspraak maken op enige restitutie en/of schadevergoeding.
</li>
<h5>ARTIKEL 2 Verplichtingen van de leerling</h5>
<li>
2.1
Om lessen te volgen moet je 16,5 jaar zijn. Tevens dient de leerling tijdens de lessen altijd een legitimatiebewijs bij zich te hebben.
</li>
<li>
2.2
De leerling zorgt er voor om op tijd en op de afgesproken plaats voor de rijles klaar te staan. Is de leerling iets te laat, dan wacht de instructeur altijd 15 minuten op de afgesproken plaats. Ben je er dan nog niet, dan heeft de Rijschool het recht om de les in rekening te brengen.
</li>
<li>
2.3
De leerling mag een rijles afzeggen of verschuiven.
Dit kan tot 24 uur voor de rijsles. Daarna heeft de rijschool het recht om de les in rekening te brengen in verband met de gereserveerde tijd.
</li>
<li>
2.4
De leerling verstrekt alle noodzakelijke informatie over zijn/haar medische en of psychische toestand, medicijn, alcohol en of drugsgebruik naar waarheid aan de Rijschool.
</li>
<li>
2.5
Indien de leerling iets verzwijgt uit hetgeen in 2.4 vermeld staat, dan heeft de Rijschool het recht de lessen (lesovereenkomst) per direct te doen beëindigen zonder enige restitutie van lesgelden.
</li>
<li>
2.6
Bij schade ontstaan als gevolg van de in 2.4 genoemde situaties heeft de Rijschool het recht dit te verhalen op de leerling.
</li>
<h5>ARTIKEL 3 Voorwaarden wijze van betaling</h5>
<li>
3.1
Betalingen van losse lessen zijn alleen contant mogelijk bij de instructeur en dienen voldaan te worden na iedere les.
</li>
<li>
3.2
Voor betalingen bij lespakketten dient de helft van het pakket uiterlijk twee weken voor aanvang van de eerste les voldaan te zijn. Het andere deel moet worden voldaan als de helft van het lespakket voltooid is. Pakketten dienen binnen 1 jaar na de eerste rijles te worden afgerond, daarna vervalt het recht van de lessen, toetsen en examens.
Alle prijzen zijn inclusief 21% BTW, cbr kosten 0 % btw.
</li>
<li>
3.3
Komt het toch voor dat de leerling niet tijdig betaalt, dan hanteert de rijschool de volgende procedure:
• a. Indien er een achterstand in de betaling ontstaat, krijg je in eerste instantie een mondelinge waarschuwing. Wordt dit echter ook achterwege gelaten ontvang je 8 dagen na de waarschuwing een factuur van de achterstand.
• b. De Rijschool heeft het recht het bedrag van de achterstand te verhogen met een minimum van € 13,50 aan administratiekosten. Bovendien mag de Rijschool rente vragen over het verschuldigde bedrag nadat er 14 dagen zijn verstreken na de factuurdatum. Deze rente bedraagt de wettelijke rente vermeerderd met 2% op jaarbasis.
</li>
<li>
3.4
Mocht het toch voorkomen dat de leerling niet betaalt, zal de Rijschool een incassobureau inschakelen. De extra kosten zijn voor de leerling.
</li>
<li>
3.5
Als je een pakket hebt aangeschaft en je behaalt je rijbewijs terwijl je het pakket nog niet volledig benut hebt, dan heb je geen recht op restitutie. Je hebt immers een flinke korting op de lesprijs gehad.
</li>
<h5>ARTIKEL 4 Rijexamens</h5>
<li>
4.1
Als de leerling niet of te laat op het examen verschijnt vanwege oorzaken die aan de leerling toegerekend kunnen worden, moet de leerling de kosten dragen voor een nieuwe aanvraag. Het examen komt te vervallen.
</li>
<li>
4.2
Mocht het rijexamen niet doorgaan wegens slecht weer, bijvoorbeeld door ijzel of sneeuw, dan hoeft de leerling het nieuwe examen niet zelf te betalen. De Rijschool heeft dan wél het recht om aan de leerling de kosten van één rijles te berekenen.
</li>
<h5>ARTIKEL 5 Beëindigen van overeenkomsten</h5>
<li>
5.1
De Rijschool heeft het recht om alle vormen van overeenkomsten te doen ontbinden als:
• a. de Rijschool sterk het vermoeden heeft dat de leerling opzettelijk geen en of onjuiste informatie heeft gegeven aan de Rijschool (zie artikel 2.5).
• b. de Rijschool sterk het vermoeden heeft dat de leerling opzettelijk niet meewerkt aan de vooruitgang van de lessen.
</li>
<h5>ARTIKEL 6 Aanvullende afspraken</h5>
<li>
6.1
De Rijschool kan indien het nodig is aanvullende afspraken met de leerling maken. Deze zullen dan in een lesovereenkomst worden vastgelegd.
</li>
<li>
6.2
Echter deze algemene voorwaarden zullen op al onze overeenkomsten van kracht zijn.
</li>
<h5>ARTIKEL 7 Lespakketten</h5>
<li>
7.1
Het aantal lessen dat in een lespakket wordt aangeboden vertegenwoordigt niet de opleidingsduur. Als een leerling aan het einde van het pakket nog niet toe is aan het praktijk examen, dan dient de leerling eerst extra lessen te volgen tot hij/zij klaar is voor het examen.
</li>
<h5>ARTIKEL 8 Vrijwaring</h5>
<li>
8.1
Als de leerling tijdens de rijles of het rijexamen een bekeuring krijgt en of schade veroorzaakt aan derden, dan gelden de volgende afspraken:
• a. De Rijschool kan de leerling normaal gesproken niet aansprakelijk stellen voor boetes en schade veroorzaakt aan derden. De Rijschool draagt zelf het risico.
• b. Als de leerling zich in de auto zodanig opzettelijk misdraagt dat er ondanks ingrijpen van de instructeur een aanrijding plaatsvindt, dan kan de leerling wel aansprakelijk worden gesteld.
• c. Het is ten zeerste verboden om tijdens de rijles onder invloed van alcohol en andere middelen die de rijvaardigheid kunnen beïnvloeden, te zijn. Als na een aanrijding blijkt, dat de leerling onder invloed was, dan kan de leerling aansprakelijk worden gesteld.
• d. Het is overigens ook verboden om medicijnen te nemen waardoor tijdens de rijles de rijvaardigheid kan worden beïnvloed. Dit staat overigens duidelijk op de verpakking. Ook dan kan de leerling bij een aanrijding aansprakelijk worden gesteld. Neem altijd contact met de rijschool op als je dergelijke medicijnen moet gebruiken.
</li>
<li>
8.2
De rijschool zal de leerling vragen of hij/zij een ontzegging van de rijbevoegdheid heeft.De leerling mag in zo’n geval ook geen lesauto besturen. Als de leerling dan tóch rijlessen neemt, kan de leerling aansprakelijk worden gesteld voor eventuele (financiële)gevolgen zoals boetes en of schade veroorzaakt aan derden.
</li>
</ul>
</section>
{% endblock %}
next step is users.
user save form:
{{ form_start(form) }}
{{ form_widget(form) }}
<button class="btn btn-primary">{{ button_label|default('Save') }}</button>
{{ form_end(form) }}
edit twig page :
{% extends 'memberbase.html.twig' %}
{% block title %}Edit User{% endblock %}
{% block content %}
<h1>Edit User</h1>
{{ include('member/_form.html.twig', {'button_label': 'Update'}) }} <br>
<a href="{{ path('app_user_index', {'id': user.id}) }}" class="btn btn-info">Back to home</a>
{% endblock %}
the normal page :
{% extends 'memberbase.html.twig' %}
{% block title %}Hello Member!{% endblock %}
{% block content %}
<div class="row">
{% for mededeling in mededelingen %}
{% if mededeling.role == 'ROLE_MEMBER' %}
<div class="col-sm-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">{{ mededeling.title }}</h5>
<p class="card-text">{{ mededeling.inhoud }}</p>
</div>
</div>
</div>
{% endif %}
{% endfor %}
</div>
{% endblock %}
info apout his page (rijlessen):
{% extends 'memberbase.html.twig' %}
{% block title %}Rijlessen{% endblock %}
{% block content %}
<h1>Rijlessen</h1>
<table class="table">
<thead>
<tr>
<th>Datum</th>
<th>Tijd</th>
<th>Ophaal Location</th>
<th>Lesdoel</th>
{# <th>Annuleren</th>#}
{# <th>Annuleer Reden</th>#}
<th>Opmerking Instructeur</th>
{# <th>Opmerking Member</th>#}
<th>instructeur Name</th>
</tr>
</thead>
<tbody>
{% for rijles in rijlessen %}
<tr>
<td>{{ rijles.datum ? rijles.datum|date('Y-m-d') : '' }}</td>
<td>{{ rijles.tijd ? rijles.tijd|date('H:i:s') : '' }}</td>
<td>{{ rijles.ophaalLocation }}</td>
<td>{{ rijles.lesdoel }}</td>
{# <td>{{ rijlessen.annuleren ? 'Yes' : 'No' }}</td>#}
{# <td>{{ rijlessen.annuleerReden }}</td>#}
<td>{{ rijles.opmerkingInstructeur }}</td>
{# <td>{{ rijlessen.opmerkingMember }}</td>#}
<td>{{ rijles.instructeur.username }}</td>
</tr>
{% else %}
<tr>
<td colspan="10">no records found</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
show profile:
{% extends 'memberbase.html.twig' %}
{% block title %}User{% endblock %}
{% block content %}
<h1>User</h1>
<table class="table">
<tbody>
<tr>
<th>Email</th>
<td>{{ user.email }}</td>
</tr>
<tr>
<th>Password</th>
<td>{{ user.password }}</td>
</tr>
<tr>
<th>Username</th>
<td>{{ user.username }}</td>
</tr>
<tr>
<th>Firstname</th>
<td>{{ user.firstname }}</td>
</tr>
<tr>
<th>Lastname</th>
<td>{{ user.lastname }}</td>
</tr>
<tr>
<th>Tussenvoegsel</th>
<td>{{ user.tussenvoegsel }}</td>
</tr>
<tr>
<th>Address</th>
<td>{{ user.address }}</td>
</tr>
<tr>
<th>Residence</th>
<td>{{ user.residence }}</td>
</tr>
<tr>
<th>Zipcode</th>
<td>{{ user.zipcode }}</td>
</tr>
</tbody>
</table>
<a href="{{ path('app_user_edit', {'id': user.id}) }}" class="btn btn-success">Edit</a>
<a href="{{ path('app_member') }}" class="btn btn-info">Back to home</a>
{% endblock %}
regester folder :
regester twig page
{% extends 'bezoekerbase.html.twig' %}
{% block title %}Register{% endblock %}
{% block content %}
<h1>Register</h1>
{{ form_start(registrationForm) }}
{{ form_row(registrationForm.username) }}
{{ form_row(registrationForm.firstname) }}
{{ form_row(registrationForm.lastname) }}
{{ form_row(registrationForm.tussenvoegsel) }}
{{ form_row(registrationForm.address) }}
{{ form_row(registrationForm.residence) }}
{{ form_row(registrationForm.zipcode) }}
{{ form_row(registrationForm.email) }}
{{ form_row(registrationForm.plainPassword, {
label: 'Password'
}) }}
{{ form_row(registrationForm.agreeTerms) }}
<button type="submit" class="btn btn-primary">Register</button>
{{ form_end(registrationForm) }}
{% endblock %}
this will help you make the basics of symfony project
Ali Qaitlbe is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.