Skip to main content

Overview

The SubjectController manages academic subjects including creation, listing, and deletion. All operations are restricted to administrators. File Location: app/controllers/SubjectController.php Dependencies:
  • Subject model
  • Auth helper

Methods

index()

Lists all subjects in the system. Authorization: Admin only Behavior:
  • Retrieves all subject records
  • Renders subject listing view
Code Example:
// Admin: list subjects
public function index()
{
    Auth::admin();

    $model = new Subject();
    $subjects = $model->all();

    require __DIR__ . '/../views/subjects/index.php';
}
View Location: app/views/subjects/index.php

create()

Displays subject creation form and handles subject creation. Authorization: Admin only
name
string
required
Subject name (POST request)
Behavior:
  • GET request: Displays creation form
  • POST request: Creates new subject and redirects
Code Example:
// Admin: create subject
public function create()
{
    Auth::admin();

    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $model = new Subject();
        $model->create($_POST['name']);

        header("Location: /school_management/public/subjects");
        exit;
    }

    require __DIR__ . '/../views/subjects/create.php';
}
Response:
  • GET: Renders creation form
  • POST: Redirects to /subjects

delete()

Deletes a subject record. Authorization: Admin only
id
integer
required
Subject ID to delete (from GET query parameter)
Behavior:
  1. Validates admin authorization
  2. Deletes subject from database
  3. Redirects to subject listing
Code Example:
// Admin: delete subject
public function delete()
{
    Auth::admin();

    $model = new Subject();
    $model->delete($_GET['id']);

    header("Location: /school_management/public/subjects");
    exit;
}
Response: Redirects to /subjects

Usage Examples

Creating a Subject

// POST /subjects/create
$_POST = [
    'name' => 'Mathematics'
];

Deleting a Subject

// GET /subjects/delete?id=7
$_GET['id'] = 7;

Notes

  • Subjects are referenced by courses and other entities
  • Deleting a subject may affect related courses (check model implementation)
  • All operations require admin authentication

Build docs developers (and LLMs) love