Registratiepagina
Controleer de User.php entity
Controleer als eerste of de package PasswordAuthenticatedUserInterface in de use space staat. Hier onder vind je hoe (ongeveer) de src/entity/User.php er ongeveer uit zou moeten zien.
php// ... use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface; class User implements UserInterface, PasswordAuthenticatedUserInterface {
Als de start van de src/Entity/User.php deze regels laat zien, ben je goed op weg!
Het registratie formulier en de RegistrationController
Om je als gebruiker te kunnen registeren hebben we twee bestanden/ oplossingen nodig. Voor de routes van het inloggen gebruiken we de RegistrationController en voor het registreren zelf maken we een registratiepagina aan in de templates map. Om je hierbij te helpen heb je de volgende twee commando's nodig.
bashcomposer require symfonycasts/verify-email-bundle
Dit heb je nodig als je zou willen werken met email verificatie emails. Dit gaan we voor nu nog niet doen, maar het is handig om deze alvast geinstalleerd te hebben.
bashsymfony console make:registration-form
Na dit commando krijg je een aantal vragen, zie hier onder hoe je die het beste kan beantwoorden/ wat je kan doen.
bashsymfony console make:registration-form Creating a registration form for App\Entity\User Do you want to add a #[UniqueEntity] validation attribute to your User class to make sure duplicate accounts aren't created? (yes/no) [yes]: > yes Do you want to send an email to verify the user's email address after registration? (yes/no) [yes]: > no Do you want to automatically authenticate the user after registration? (yes/no) [yes]: > yes ! [NOTE] No authenticators found - so your user won't be automatically authenticated after registering. What route should the user be redirected to after registration?: [0 ] _preview_error [1 ] _wdt [2 ] _profiler_home [3 ] _profiler_search [4 ] _profiler_search_bar [5 ] _profiler_phpinfo [6 ] _profiler_xdebug [7 ] _profiler_font [8 ] _profiler_search_results [9 ] _profiler_open_file [10] _profiler [11] _profiler_router [12] _profiler_exception [13] _profiler_exception_css [14] app_index > 14 updated: src/Entity/User.php created: src/Form/RegistrationFormType.php created: src/Controller/RegistrationController.php created: templates/registration/register.html.twig Success!
Als je zelf een gebruiker in de database wilt invoeren (bijvoorbeeld via PHPMyAdmin) dan kan je een gekozen wachtwoord ook via de terminal laten hashen met het volgende commando:
bashsymfony console security:hash-password
Voor nu is het niet nodig, we gaan direct met de registratie-pagina aan de gang.
Als je nu naar jouw applicatie gaat, lokaal op bijvoorbeeld http://localhost:8000/register zal je de registratiepagina te zien krijgen.
De registratie pagina aanpassen
Als je de vorige stappen goed doorlopen hebt zijn er drie nieuwe bestanden gemaakt en is er een geupdate. Aan het einde van het make:registration-form commando zal Symfony het volgende gemeld hebben:
updated: src/Entity/User.phpcreated: src/Form/RegistrationFormType.phpcreated: src/Controller/RegistrationController.phpcreated: templates/registration/register.html.twig
Als je er voor gekozen hebt om een aantal velden toe te voegen aan de User entity dan moet je die velden ook toevoegen aan de registratie pagina. Daarvoor kan je het bestand templates/registration/register.html.twig naar hartelust aanpassen.
BELANGRIJK! Pas de RegistrationController aan
Het lijkt erop dat er een foutje in Symfony zit met het aanmaken van het registratie formulier. Hierdoor worden de standaard fouten niet getoond in het formulier. Hiervoor dien je een kleine aanpassing te maken in de RegistrationController.
Aan het einde van de register methode (function) bij de return $this->render(... staat nu:
'registrationForm' => $form->createView(),
De createView() property moet weg, je moet alleen $form door sturen.
phpreturn $this->render('registration/register.html.twig', [ 'registrationForm' => $form, ]);
Meer in In- en uitloggen