lk.zachem.info/app/Modules/Admin/Http/Controllers/AdminPostsController.php
2025-04-09 09:47:12 +08:00

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');
}
}