首页 > 解决方案 > 在 Laravel 中更新表单出错

问题描述

这可能是一个非常简单的问题,但我想不通!这令人沮丧。我尽我所能一步一步地解释一切。

显示控制器.php

public function show(Project $project)
 {
    return view('projects.show', compact('project'));
 }

show.blade.php

<form action="{{ route('project.update',['project' => $project]) }}" method="post">
  @csrf
  @method('PUT')
  <textarea name="notes" placeholder="Add notes">{{ $project->notes ?? '' }}</textarea>
  <button type="submit">Save</button>
</form>

更新控制器.php

public function update(ProjectRequest $request, Project $project)
 {
  $validated = $request->validated();
  $project->update($validated);
  return redirect($project->path());
 }

项目请求.php

public function rules(): array
{
  return [
      'owner_id' => 'required',
      'title' => 'required',
      'description' => 'required',
      'notes' => 'nullable',
        ];

网页.php

use App\Http\Controllers\Projects\CreateController;
use App\Http\Controllers\Projects\IndexController;
use App\Http\Controllers\Projects\ShowController;
use App\Http\Controllers\Projects\StoreController;
use App\Http\Controllers\Projects\UpdateController;
use Illuminate\Support\Facades\Route;

Route::get('/', [IndexController::class, 'index'])->name('project.index');
Route::get('/projects/create', [CreateController::class, 'create'])->name('project.create');
Route::post('/projects', [StoreController::class, 'store'])->name('project.store');
Route::get('/projects/{project}', [ShowController::class, 'show'])->name('project.show');
Route::put('/projects/{project}', [UpdateController::class, 'update'])->name('project.update');

移民

 public function up()
    {
        Schema::create('projects', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('owner_id');
            $table->string('title');
            $table->text('description');
            $table->text('notes')->nullable();
            $table->timestamps();

            $table->foreign('owner_id')
                ->references('id')
                ->on('users')
                ->onDelete('cascade');
        });
    }

标签: laravellaravel-8laravel-requestlaravel-form

解决方案


如果这些字段不是必需的,则将它们从您的 $required 数组中取出,它应该可以工作。


推荐阅读