как редактировать только один пост вместо итеративного l oop всех постов? - PullRequest
0 голосов
/ 11 июля 2020

Я использую foreach($user->posts as $post) в моем поле ввода, чтобы я мог использовать это value="{{ old('about') ?? $post->about }}", потому что без итерации я получаю ошибку (пытаюсь получить свойство объекта) при использовании значения. Однако я не делаю то, что мой edit.blade выглядит так при попытке редактирования. Мне нужно только одно поле ввода только для одного конкретного сообщения, которое я пытаюсь редактировать

enter image description here

edit.blade.php

@extends('layouts.app')

@section('content')
 @csrf @method ('ПАТЧ') @foreach ($ user-> posts as $ post) {{__ ('post about')}}  @error ('about') {{$ message}}   @enderror  @endforeach {{__ ('post image')}}  @error ('изображение') {{$ message}}   @enderror       @endsection 

маршрут

Route::get('/post/edit/{user}', 'PostController@edit')->name('post.edit');


Route::patch('/p/update/{user}', 'PostController@update')->name('post.update');

PostController

 public function edit(User $user)
{
   

  return view('posts.edit', compact('user'));
}

 public function update(User $user)
{
$data = request()->validate([
    'about' => 'required',
    'image' => '',

  ]);

  if(request('image')){
    $imagePath = request('image')->store('uploads','public');
    $image = Image::make(public_path("storage/{$imagePath}"))->fit(500,500);
  
    $image->save();

    $imageArray = ['image' => $imagePath];

  }
  auth()->user()->posts()->update(array_merge( $data, $imageArray ?? [] ) );
  
  return redirect("/user/{$user->id} ");
}

1 Ответ

0 голосов
/ 11 июля 2020

для того, чтобы передать одно сообщение для редактирования, вы должны передать это сообщение, например:

Route

Route::get('/post/edit/{post}', 'PostController@edit')->name('post.edit');

Controller

 public function edit(Post $post)
{
   
  return view('posts.edit', compact('post'));
}

Blade-файл

<label for="about" class="col-md-4 col-form-label text-md-right">{{ __(' post about') }}</label>

<div class="col-md-6">
<input id="about" type="text" class="form-control @error('about') is-invalid @enderror" name="about"  value="{{ old('about') ?? $post->about }}" required autocomplete="about" autofocus>

    @error('about')
        <span class="invalid-feedback" role="alert">
            <strong>{{ $message }}</strong>
        </span>
    @enderror
</div>
...