I have been learning the new enum class and been having a heck of a time getting it to pass validation. Its just a simple role enum. The error I'm getting says "The selected role is invalid even though I'm seeing in console.log(employee) that it is a valid value for each selection.
The Enum
<?php
namespace App\Enums;
enum RoleEnum: string
{
case none = 'none'; //in case role has yet to be assigned
case employee = 'employee';
case manager = 'manager';
case admin = 'admin';
}
The model
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\Boss;
use App\Enums\RoleEnum;
class Employee extends Model
{
use HasFactory;
protected $fillable = [ 'id', 'name', 'boss_id','title' ];
protected $casts = [ 'role' => RoleEnum::class];
public function employees()
{
return $this->belongsTo('\App\Models\Boss');
}
}
The Controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Models\Boss;
use App\Models\Employee;
use App\Enums\RoleEnum;
class EmployeeController extends Controller
{
public function store(Request $request)
{
$request->validate([
'name' =>'required|string|max:255',
'boss_id' =>'required|exists:bosses,id',
'title' =>'string|max:255',
'role' =>'required|in:RoleEnum',
]);
$employee = Employee::create([
'name' => $request->name,
'boss_id' => $request->boss_id,
'title' => $request->title,
'role' => $request->role,
]);
$bosses = Boss::get();
return redirect('/details')->with([
'employee' => $employee,
'bosses' => $bosses,
'success','User Created!',
]);
}
}
The Create blade input (I only included the code in question)
<div class="form-group">
<label for="role">Role</label>
<select
class="form-control"
id="role"
v-model="game.role"
required
>
<option class="form-check-input" type="radio" value='employee'>Employee</option>
<option class="form-check-input" type="radio" value='manager'>Manager</option>
<option class="form-check-input" type="radio" value='admin'>Admin</option>
</select>
</div>
Consol.log(employee)
name: "John Martin"
boss_id: "5"
title: "Trainer"
role: "employee"
This is all new territory for me so any help is greatly appreciated.