четверг, 7 сентября 2017 г.

Laravel. Блог. Загрузка изображения.

Загрузка изображения.


\resources\views\admin\post\edit.blade.php
Для загрузки изображения в форме должно стоять enctype="multipart/form-data"


\app\Http\Controllers\Admin\PostController.php

public function update(Request $request, $id)
{
$this->validate($request, [
'title'=>'required',
'subtitle'=>'required',
'slug'=>'required',
'body'=>'required',
'image'=>'required'
]);

if($request->hasFile('image')) {
// return $request->image->getClientOriginalName(); // имя файла
$imageName = $request->image->store('public'); // сохраняется в \storage\app\public
}


$post = post::find($id);
$post->image = $imageName;
$post->title = $request->title;
$post->subtitle = $request->subtitle;
$post->slug = $request->slug;
$post->body = $request->body;
$post->status= $request->status;
$post->tags()->sync($request->tags);
$post->categories()->sync($request->categories);
$post->save();

return redirect(route('post.index'));
}

Идем в пользовательскую часть \resources\views\user\post.blade.php
Вставим картинку из БД.
@section('bg-img', Storage::disk('local')->url($post->image))

Соединим папку storage и public.
Идем в консоль и пишем там:
php artisan storage:link

Нам выдаст: The [public/storage] directory has been linked.

Теперь, если мы зайдем в \public, то увидим там ярлык папки storage. Туда копируются картинки.

Теперь сделаем тоже для создания сообщения.
\app\Http\Controllers\Admin\PostController.php
public function store(Request $request)
{
$this->validate($request, [
'title'=>'required',
'subtitle'=>'required',
'slug'=>'required',
'body'=>'required',
'image' =>'required'
]);

if($request->hasFile('image')) {
$imageName = $request->image->store('public'); // сохраняется в \storage\app\public
}


$post = new post;
$post->image = $imageName;
$post->title = $request->title;
$post->subtitle = $request->subtitle;
$post->slug = $request->slug;
$post->body = $request->body;
$post->status= $request->status;
$post->save();
$post->tags()->sync($request->tags);
$post->categories()->sync($request->categories);

return redirect(route('post.index'));
}

Не забываем написать в \resources\views\admin\post\post.blade.php

<form role="form" action="{{ route('post.store') }}" method="post" enctype="multipart/form-data">

Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html