License Key Required
No license key entered.
Enter or update your key with php artisan health:license <key>,
or purchase one at scriptgain.com.
Fields
admin.sections._fields
Compiled PHP
What Blade turns your template into. This is what the syntax check parses.
Loading…
Available Variables And Components
A guide to what this template can use, derived from the shipped source. Click any item to insert it at your cursor. It is a helpful reference, not a runtime guarantee.
Always Available
Shared with the admin panel by the staff layout.- Validation error bag. Always present. Pairs with @error('field').
- The admin sidebar navigation structure.
- Sub-items of the currently open nav group.
- Breadcrumb trail for the current page.
- Signed-in staffer's initials, for the avatar.
- Signed-in staffer's name.
- Signed-in staffer's email address.
- The staffer's role, e.g. "Administrator".
- True when the signed-in staffer is an administrator.
- Number of open service requests, for the badge.
- Number of unread form submissions, for the badge.
- The configured admin-shell width class.
- URL of the uploaded site logo, or null.
- URL of the uploaded favicon, or null.
In This Template
- Courses.
- Delivery Modes.
- Periods.
- Record.
- Teachers.
- Terms.
- Weekdays.
Drop any of these in. Click to insert the opening tag at your cursor.
General
Admin Panel
Layouts
Records
Site (Public)
Common Blade
- Print a value, safely escaped. The default choice.
- Print raw HTML. Only for content you trust.
- Show something conditionally.
- Loop over a collection.
- Loop, with a fallback when the collection is empty.
- Show a validation message for a field.
- A small block of PHP. Never on line 1. Keep logic out of templates.
- A comment that never reaches the browser.
Civic Helpers
- Build a URL to a named route, e.g. a department page.
- Link to a single news post.
- Turn a stored upload path into a public URL.
- A cache-busted URL for a bundled asset.
- Read a config value, e.g. the site width class.
- Build an absolute URL to a path.
No History Yet
Every save, revert, and reset of this template is recorded here, with a one-click way back to any of them.
The Template That Shipped With The Product
Read only. This is what Reset To Default puts back.
{{-- Shared create/edit fields for a section. --}}
<x-card title="What Is Taught, And When">
<div class="grid gap-5 sm:grid-cols-2">
<x-field label="Course" for="course_id" required :error="$errors->first('course_id')">
<x-select id="course_id" name="course_id" required>
<option value="">Choose A Course…</option>
@foreach ($courses as $course)
<option value="{{ $course->id }}" @selected(old('course_id', $record->course_id) == $course->id)>{{ $course->code }} — {{ $course->title }}</option>
@endforeach
</x-select>
</x-field>
<x-field label="Term" for="term_id" required :error="$errors->first('term_id')">
<x-select id="term_id" name="term_id" required>
<option value="">Choose A Term…</option>
@foreach ($terms as $term)
<option value="{{ $term->id }}" @selected(old('term_id', $record->term_id) == $term->id)>{{ $term->name }}</option>
@endforeach
</x-select>
</x-field>
<x-field label="Teacher" for="staff_member_id"
hint="A faculty member with a portal login can grade and take attendance for this section."
:error="$errors->first('staff_member_id')">
<x-select id="staff_member_id" name="staff_member_id">
<option value="">Unassigned</option>
@foreach ($teachers as $teacher)
<option value="{{ $teacher->id }}" @selected(old('staff_member_id', $record->staff_member_id) == $teacher->id)>{{ $teacher->name }}@if ($teacher->job_title) — {{ $teacher->job_title }} @endif</option>
@endforeach
</x-select>
</x-field>
<x-field label="Section Name" for="name"
hint="Optional label to tell two sections of the same course apart. For example: Section A."
:error="$errors->first('name')">
<x-input id="name" name="name" maxlength="80" :value="old('name', $record->name)" placeholder="Section A" />
</x-field>
</div>
</x-card>
<x-card title="Where And How Often">
<div class="grid gap-5 sm:grid-cols-2">
<x-field label="Room" for="room" :error="$errors->first('room')">
<x-input id="room" name="room" maxlength="60" :value="old('room', $record->room)" placeholder="Room 112" />
</x-field>
<x-field label="Period" for="period_id"
hint="Which slot in the bell schedule this class meets in. Set this plus the days below to place it on the timetable."
:error="$errors->first('period_id')">
<x-select id="period_id" name="period_id">
<option value="">Not On The Timetable</option>
@foreach ($periods as $period)
<option value="{{ $period->id }}" @selected(old('period_id', $record->period_id) == $period->id)>{{ $period->label() }}</option>
@endforeach
</x-select>
</x-field>
@php($selectedDays = old('meeting_days', $record->meeting_days ?? []))
<x-field label="Meeting Days" class="sm:col-span-2"
hint="The weekdays this class meets. Used with the period to build the timetable and catch scheduling clashes."
:error="$errors->first('meeting_days')">
<div class="flex flex-wrap gap-2">
@foreach ($weekdays as $dayNum => $dayName)
<label class="cursor-pointer">
<input type="checkbox" name="meeting_days[]" value="{{ $dayNum }}" @checked(in_array($dayNum, (array) $selectedDays)) class="peer sr-only">
<span class="inline-flex items-center rounded-lg border border-slate-200 px-3 py-1.5 text-sm font-medium text-slate-600 transition hover:border-slate-300 peer-checked:border-brand-500 peer-checked:bg-brand-50 peer-checked:text-brand-700">{{ $dayName }}</span>
</label>
@endforeach
</div>
</x-field>
<x-field label="Meeting Times Override" for="schedule_note" class="sm:col-span-2"
hint="Optional free text shown when you are not using the period + days above. For example: MWF 9:00–9:50."
:error="$errors->first('schedule_note')">
<x-input id="schedule_note" name="schedule_note" maxlength="120" :value="old('schedule_note', $record->schedule_note)" placeholder="MWF 9:00–9:50" />
</x-field>
<x-field label="Capacity" for="capacity" :error="$errors->first('capacity')">
<x-input id="capacity" name="capacity" type="number" min="1" max="1000"
:value="old('capacity', $record->capacity ?? 30)" class="tabular" />
</x-field>
<x-field label="Delivery" for="delivery_mode" required
hint="Online and hybrid sections carry course content (modules and lessons) that students work through in their portal."
:error="$errors->first('delivery_mode')">
<x-select id="delivery_mode" name="delivery_mode" required>
@foreach ($deliveryModes as $value => $labelText)
<option value="{{ $value }}" @selected(old('delivery_mode', $record->delivery_mode ?: 'in_person') === $value)>{{ $labelText }}</option>
@endforeach
</x-select>
</x-field>
<x-field label="Status" for="is_active" :error="$errors->first('is_active')">
<x-toggle name="is_active"
:checked="old('is_active', $record->exists ? $record->is_active : true)"
label="Open For Enrollment"
description="Inactive sections are hidden from new enrollments." />
</x-field>
</div>
</x-card>
Blade In One Screen
The directives you will use most.
- Print a value, escaped. Safe by default.
- Print raw HTML. Only for content you trust.
- Show something conditionally.
- Loop over a collection.
- Use a shared component. Every component in Shared Components is available.
- A comment that never reaches the browser.
{{ $variable }}
{!! $html !!}
@if / @else / @endif
@foreach / @endforeach
<x-card>
{{-- comment --}}
House Rules
Follow these and your edits will survive updates.
-
Never start line 1 with
@php. Blade mis-parses it and the page fails. The editor refuses to save it. - Keep logic out of templates. If you need a calculation, it belongs in a composer or component class, not here.
- The shipped file is never modified. Reset To Default always gets you back.
- Every save is versioned. You can revert to any earlier version in one click.
- Press Tab inside the editor to indent rather than jump to the next field.