Как изменить имя загружаемого файла при редактировании в Laravel? - PullRequest
0 голосов
/ 09 ноября 2019
if (isset($article) && isset($article->id))


    <option value="0" {{ ($article->published == 0) ? 'selected' : '' }}>Publish</option>
    <option value="1" {{ ($article->published == 1) ? 'selected' : '' }}>No publish</option>
@else
    <option value="0" selected disabled>No publish</option>
    <option value="1" disabled>Publish</option>
@endif
<img src="{{URL::to('/images').'/'.$article->image_path}}" alt="">
<input type="file" name="image_path" />


function upload(Request $request){

  $image = $request->file('image_path');

  $new_name = rand() . '.' . $image->getClientOriginalExtension();

  $image->move(public_path('images'), $new_name);
  return $new_name; 
}


   public function update(Request $request, Article $article)
{
    $article->update($request->except('slug'));


    $article->categories()->detach();

    if($request->input('categories'))  :
        $article->categories()->attach($request->input('categories'));
    endif;
    return redirect()->route('admin.article.index');    
}

Мне нужно, когда я захожу на страницу редактирования, и при входе появляется картинка, которую нужно запомнить иначе, даже если она есть и я ничего не редактирую, тогда база данных остается пустой.

Когда я создаю новое сообщение и сохраняю новое изображение, все в порядке, но когда я редактирую, мне нужно помнить, что уже есть, и если я не изменяю, то сохраняйте то же самое в базе данных, если я не загружу другое.

Ответы [ 2 ]

1 голос
/ 09 ноября 2019

Попробуйте это:

public function update(Request $request, Article $article)
{
    $article->update($request->except('slug', 'image_path'));

    if ($request->hasFile('image_path')) {

        // Add your file upload logic here
        $image = $request->file('image_path');
        $new_name = rand() . '.' . $image->getClientOriginalExtension();
        $image->move(public_path('images'), $new_name);

        $article->image_path = $new_name;
        $article->save();
    }

    $article->categories()->detach();

    if ($request->has('categories')) {
        $article->categories()->attach($request->input('categories'));
    }

    return redirect()->route('admin.article.index');
}

Источник Документы Laravel

Вы также можете прочитать больше о загрузке файлов для улучшения вашего кода: https://laravel.com/docs/6.x/requests#files

0 голосов
/ 09 ноября 2019

Сначала вам нужно проверить или сопоставить в базе данных, что файл существует или не похож на:

Я предполагаю, что у вас есть обновление перикулярной записи. Одиночная запись. И 'image_path' означает название изображения, верно?

  If( $article->image_field_name == $request->input('image_path'){
          //Your update logic here.

  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...