【问题标题】:Laravel update only refreshes a pageLaravel update 只刷新一个页面
【发布时间】:2023-01-11 02:17:08
【问题描述】:

我的更新页面不工作,当我提交表单时,它只会刷新页面并向我的 URL 添加一些内容,例如: http://127.0.0.1:8000/admin/employees/102/edit?_method=PUT&_token=mj3lrHqoYm1wiLwWiNQ8OX0kNRjmW4QVRuLpgZxY&image_path=&name=Libbie+Ebert&phone_number=380324244497&email=brekke.lola%40example.org&position_id=7&payment=186799&head=Asia+Frami&recruitment_date=2022-01-10。我已经清除了路由缓存,但它仍然无法正常工作,并且还尝试使用 dd 函数,但它没有出现。有什么问题?我的模型:

class Employee extends Model
{
    use HasFactory;

    protected $casts = [
        'recruitment_date' => 'datetime:d-m-y',
     ];

    protected $fillable= ['name', 'position_id', 'phone_number',
    'recruitment_date', 'email', 'head',
    'image_path', 'payment', 'admin_created_id', 'admin_updated_id'];

    public function position()
    {
        return $this->belongsTo(Position::class,  'position_id');
    }
}

控制器功能:

    public function update(StoreEmployeeRequest $request, $id){
        $input = $request->validated();

        $employee = Employee::findOrFail($id);

        $employee->update([
            'name' => $request->input('name'),
            'position_id' => $request->input('position_id'),
            'phone_number' => '+' . $request->input('phone_number'),
            'recruitment_date' => $request->input('recruitment_date'),
            'email' => $request->input('email'),
            'head' => $request->input('head'),
            'image_path' => $input['image_path'],
            'payment' => number_format($request->input('payment')),
            'admin_updated_id' => auth()->id(),
        ]);

        return to_route('admin.employees.index');

    }

要求:

public function rules()
    {
        return [
            'name' => 'required|min:2|max:255',
            'recruitment_date' => 'required|date',
            'phone_number' => 'required',
            'email' => 'required|email',
            'payment' => 'required|numeric',
            'position_id' => 'required',
            'image_path' => 'image|mimes:jpg,png|max:5000|dimensions:min_width=300,min_height=300'
        ];
    }

看法:

            <form action="{{ route('admin.employees.update', ['id' => $employee->id]) }}" enctype="multipart/form-data">
                @method('PUT')
                @csrf
                <label for="image_path" class="form-label">Photo</label>
                <input type="file" name="image_path" class="form-control-file" >
                @error('image_path')
                    <div class="alert alert-danger mt-2" role="alert"><strong>{{ $message }}</strong></div>
                @enderror

                <label for="name" class="form-label">Name</label>
                <input type="text" name="name" class="form-control" value="{{ $employee->name }}" placeholder="Name is...">
                @error('name')
                    <div class="alert alert-danger mt-2" role="alert"><strong>{{ $message }}</strong></div>
                @enderror


                <label for="phone_number" class="form-label">Phone</label>
                <input type="text" name="phone_number" class="form-control" value="{{ old('phone_number', preg_replace('/[^0-9]/', '', $employee->phone_number)) }}" placeholder="380...">
                @error('phone_number')
                    <div class="alert alert-danger mt-2" role="alert"><strong>{{ $message }}</strong></div>
                @enderror


                <label for="email" class="form-label">Email</label>
                <input type="email" name="email" class="form-control" value="{{ old('email', $employee->email) }}" placeholder="Email is...">
                @error('email')
                    <div class="alert alert-danger mt-2" role="alert"><strong>{{ $message }}</strong></div>
                @enderror



                <label for="position_id" class="form-label">Position</label>
                <select class="form-control" name="position_id" aria-label=".form-select-lg example">
                    @foreach ($positions as $position)
                        <option value="{{ $position->id }}" {{$employee->position_id == $position->id  ? 'selected' : ''}}>{{ $position->name }}</option>
                    @endforeach
                </select>
                @error('position_id')
                    <div class="alert alert-danger mt-2" role="alert"><strong>{{ $message }}</strong></div>
                @enderror


                <label for="payment" class="form-label">Salary, $</label>
                <input type="text" name="payment" class="form-control" value="{{ old('payment', preg_replace('/[^0-9]/', '', $employee->payment)) }}" placeholder="Salary is...">
                @error('payment')
                    <div class="alert alert-danger mt-2" role="alert"><strong>{{ $message }}</strong></div>
                @enderror


                <label for="head" class="form-label">Head</label>
                <input type="text" id="head" name="head" class="form-control" value="{{ old('head', $employee->head) }}" placeholder="Head is...">
                @error('head')
                    <div class="alert alert-danger mt-2" role="alert"><strong>{{ $message }}</strong></div>
                @enderror


                <label for="recruitment_date" class="form-label">Date</label>
                <input type="datetime-local" name="recruitment_date" value="{{ old('recruitment_date', $employee->recruitment_date) }}" class="form-control">
                @error('recruitment_date')
                    <div class="alert alert-danger mt-2" role="alert"><strong>{{ $message }}</strong></div>
                @enderror



                <div class="mt-4 text-center">
                    <button type="submit" class="btn btn-secondary">Submit</button>
                </div>
            </form>

路线:

Route::put('/admin/employees/{id}/edit', [EmployeeController::class, 'update'])->name('admin.employees.update');

【问题讨论】:

    标签: php laravel laravel-9


    【解决方案1】:

    您缺少表单中的方法属性,默认的是 GET。添加@method('PUT') 是不够的。 像这样更改您的代码:

    <form
        action="{{ route('admin.employees.update', ['id' => $employee->id]) }}"
        method="POST"
        enctype="multipart/form-data">
    

    【讨论】:

      【解决方案2】:

      我想你应该邮政提交表单时的方法。

      【讨论】:

        猜你喜欢
        • 2021-05-03
        • 2013-10-15
        • 1970-01-01
        • 2020-12-03
        • 1970-01-01
        • 2019-02-01
        • 1970-01-01
        • 2020-03-21
        • 1970-01-01
        相关资源
        最近更新 更多