84 lines
2.2 KiB
PHP
84 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace Modules\Admin\Http\Controllers;
|
|
|
|
use Modules\Post\Models\Post;
|
|
use Modules\Post\Models\PostCategory;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
class AdminPostsController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$posts = Post::orderBy('id', 'desc')->get();
|
|
return view('admin::posts.index', [
|
|
'posts' => $posts
|
|
]);
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
return view('admin::posts.create', [
|
|
'categories' => PostCategory::cases()
|
|
]);
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$validated = $request->validate([
|
|
'name' => 'required',
|
|
'category' => 'required',
|
|
'short_text' => 'max:500',
|
|
'text' => 'required',
|
|
'imageFile' => 'required|mimes:jpg,bmp,png'
|
|
]);
|
|
$path = $request->file('imageFile')->store('posts', ['disk' => 'public']);
|
|
$request['image'] = $path;
|
|
$post = Post::create(
|
|
$request->only(['name', 'short_text', 'text', 'category', 'image'])
|
|
);
|
|
return to_route('admin.posts');
|
|
}
|
|
|
|
public function edit(Post $post)
|
|
{
|
|
return view('admin::posts.edit', [
|
|
'categories' => PostCategory::cases(),
|
|
'post' => $post
|
|
]);
|
|
}
|
|
|
|
public function update(Request $request, Post $post)
|
|
{
|
|
$validated = $request->validate([
|
|
'name' => 'required',
|
|
'category' => 'required',
|
|
'short_text' => 'max:500',
|
|
'text' => 'required',
|
|
]);
|
|
|
|
if ($request->file('imageFile'))
|
|
{
|
|
$path = $request->file('imageFile')->store('posts', ['disk' => 'public']);
|
|
$request['image'] = $path;
|
|
}
|
|
else
|
|
{
|
|
$reuqest['image'] = $post->image;
|
|
}
|
|
$post = $post->update(
|
|
$request->only(['name', 'short_text', 'text', 'category', 'image'])
|
|
);
|
|
return to_route('admin.posts');
|
|
}
|
|
|
|
public function delete(Post $post)
|
|
{
|
|
$post->delete();
|
|
return to_route('admin.posts');
|
|
}
|
|
}
|