Skip to content

Registration Page

URL: /user/register Template: Modules/Application/resources/views/user/register.blade.php

The registration form collects user email, first name, last name, password, and phone number. It also supports optional reCAPTCHA verification and newsletter opt-in.


Page Variables ($page->misc)

Variable Type Default Description
$page->misc->redirect string\|null null URL to redirect after registration
$page->misc->loginRedirect string\|null null Alternative post-registration redirect
$page->misc->enableCaptcha int 0\|1 0 Whether reCAPTCHA is enabled
$page->misc->captcha_msg bool false If true, show visible reCAPTCHA widget; if false, use invisible v3
$page->misc->recaptcha string '' The reCAPTCHA site key
$page->misc->emailSubscriptionStatus int 0\|1 0 Whether to show newsletter checkbox

Validation Settings (from $page->settings)

Setting Description
$page->settings->First_And_Last_Name_Min_Value Minimum characters for first/last name (default: 1)
$page->settings->First_And_Last_Name_Max_Value Maximum characters for first/last name (default: 100)
$page->settings->Password_Min_Value Minimum password length (default: 6)
$page->settings->Password_Max_Value Maximum password length (default: 255)
$page->settings->Email_Empty_Message Custom message for empty email field
$page->settings->Email_Already_Exits_Message Custom message when email already exists
$page->settings->Email_Available_Message Custom message when email is available
$page->settings->Required_message Custom "This field is required" message
$page->settings->Password_Required_Message Custom password required message
$page->settings->First_Name_Required_Message Custom first name required message
$page->settings->Characters_Not_Allowed_message Message for invalid characters
$page->settings->Phone_Number_Invalid_Alert__Message Invalid phone message

Form Fields

The form POSTs to route('user.register'):

Field Type Required Description
email email User email address
name text First name
last_name text Last name
password password Chosen password
passwordVerify password Password confirmation
phone text Phone number (digits only)
code hidden Country phone code (+1 for US, +444 for CAN)
newsletter checkbox Newsletter opt-in (value 1)
g-recaptcha-response hidden reCAPTCHA response token
redirect hidden Post-registration redirect URL
registerRedirect hidden Whether to redirect on completion
refer hidden Referring page (default: 'home')

Email Availability Check

The form makes a live AJAX call to route('user.emailvalidate') as the user types:

@section('script')
<script>
    // Validate email availability
    var validateEmailUrl = @json(route('user.emailvalidate', [], false));

    $('#email').on('blur', function() {
        $.post(validateEmailUrl, {
            type: 'create',
            email: $(this).val(),
            _token: $('input[name="_token"]').val()
        }, function(data) {
            if (String(data) === 'true') {
                // Email is available
            } else {
                // Email already taken
            }
        });
    });
</script>
@endsection

Minimal Registration Template Example

@extends('layout.layout')

@section('headtitle')
    <title>Create Account | {{ $page->settings->siteTitle ?? '' }}</title>
@endsection

@section('content')
@php
    $redirect = $page->misc->redirect ?? null;
    $enableCaptcha = (int)($page->misc->enableCaptcha ?? 0);
    $recaptchaKey = (string)($page->misc->recaptcha ?? '');
    $emailSubscriptionStatus = (int)($page->misc->emailSubscriptionStatus ?? 0);
    $passwordMin = max(6, (int)($page->settings->Password_Min_Value ?? 6));
@endphp

<div class="container mt-4">
    <h1>Create an Account</h1>

    @if(session('login_register_msg'))
        <div class="alert alert-info">{!! session('login_register_msg') !!}</div>
    @endif

    <form id="registerForm" method="post" action="{{ route('user.register', [], false) }}">
        @csrf

        <div class="mb-3">
            <label>Email</label>
            <input type="email" name="email" class="form-control" value="{{ old('email') }}" required>
            @error('email') <div class="text-danger">{{ $message }}</div> @enderror
        </div>

        <div class="mb-3">
            <label>First Name</label>
            <input type="text" name="name" class="form-control" value="{{ old('name') }}" required>
            @error('name') <div class="text-danger">{{ $message }}</div> @enderror
        </div>

        <div class="mb-3">
            <label>Last Name</label>
            <input type="text" name="last_name" class="form-control" value="{{ old('last_name') }}">
        </div>

        <div class="mb-3">
            <label>Password (min {{ $passwordMin }} characters)</label>
            <input type="password" name="password" class="form-control" required>
            @error('password') <div class="text-danger">{{ $message }}</div> @enderror
        </div>

        <div class="mb-3">
            <label>Re-Enter Password</label>
            <input type="password" name="passwordVerify" class="form-control" required>
        </div>

        <div class="mb-3">
            <label>Phone</label>
            <input type="text" name="phone" class="form-control" value="{{ old('phone') }}">
            <input type="hidden" name="code" value="+1">
        </div>

        @if($emailSubscriptionStatus === 1)
            <div class="mb-3 form-check">
                <input type="checkbox" class="form-check-input" name="newsletter" value="1" id="newsletter" checked>
                <label class="form-check-label" for="newsletter">
                    Subscribe to our newsletter
                </label>
            </div>
        @endif

        @if($redirect)
            <input type="hidden" name="redirect" value="{{ $redirect }}">
        @endif
        <input type="hidden" name="g-recaptcha-response" value="" id="g-recaptcha-response">

        <button type="submit" class="btn btn-primary">Create Account</button>
    </form>
</div>
@endsection