Это может быть очень простой вопрос, но я не могу его понять! и это расстраивает. Я стараюсь все объяснять шаг за шагом.
- Это небольшой проект списка Todo в Laravel 8
- Пользователь может создать проект.
- Когда пользователь нажимает на созданный проект, он переходит на страницу проекта (показать страницу)
ShowController.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>
- Здесь что-то пойдет не так, обновив проект! как только пользователь вводит что-то в поле комментариев и нажимает кнопку «Сохранить», в форме указывается, что необходимы следующие элементы:
- Поле owner_id, title, description обязательны. Пока модель отправляется на страницу показа лезвия, а затем в маршрут действия формы. Что я здесь делаю не так?
UpdateController.php
public function update(ProjectRequest $request, Project $project)
{
$validated = $request->validated();
$project->update($validated);
return redirect($project->path());
}
ProjectRequest.php
public function rules(): array
{
return [
'owner_id' => 'required',
'title' => 'required',
'description' => 'required',
'notes' => 'nullable',
];
web.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');
});
}