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 |
✅ | 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