我一直在学习新的枚举课程,并且花了很长一段时间让它通过验证。这只是一个简单的角色枚举。我所得到的错误说:“所选的角色无效,尽管我在console.log(employee)中看到它是每个选择的有效值。
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';
}模型
<?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');
}
}主计长
<?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!',
]);
}
}Create刀片输入(我只包含了相关代码)
<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(雇员)
name: "John Martin"
boss_id: "5"
title: "Trainer"
role: "employee"这对我来说是全新的领域,任何帮助都是非常感谢的。
发布于 2022-09-21 09:02:05
您使用的in规则用于特定逗号分隔值的列表。您传递的是枚举的名称,但是in不是这样工作的。
Laravel有一个可以使用的枚举验证规则:
use Illuminate\Validation\Rules\Enum;
use App\Enums;
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', new Enum(RoleEnum::class) ],
]);
$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!',
]);
}
}https://stackoverflow.com/questions/73797847
复制相似问题