👁 查看:NewspaperController.php
路径:/home/boguraj1/.trash/app.1/Http/Controllers/Admin/NewspaperController.php
大小:2.71 KB · 修改:2026-06-25 22:26:28 · 权限:0644 · 可写
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Newspaper;
use Illuminate\Http\Request;
class NewspaperController extends Controller
{
public function index()
{
$newspapers = Newspaper::withCount('pages')
->orderByDesc('publish_date')
->paginate(15);
return view('admin.newspapers.index', compact('newspapers'));
}
public function create()
{
return view('admin.newspapers.create');
}
public function store(Request $request)
{
$data = $request->validate([
'publish_date' => 'required|date|unique:newspapers,publish_date',
'edition_name' => 'nullable|string|max:255',
'volume' => 'nullable|string|max:100',
'issue_number' => 'nullable|string|max:100',
'status' => 'required|in:draft,published',
'description' => 'nullable|string',
]);
$newspaper = Newspaper::create($data);
return redirect()->route('admin.newspapers.pages', $newspaper)
->with('success', 'Newspaper edition created. Now upload pages.');
}
public function edit(Newspaper $newspaper)
{
return view('admin.newspapers.edit', compact('newspaper'));
}
public function update(Request $request, Newspaper $newspaper)
{
$data = $request->validate([
'publish_date' => 'required|date|unique:newspapers,publish_date,' . $newspaper->id,
'edition_name' => 'nullable|string|max:255',
'volume' => 'nullable|string|max:100',
'issue_number' => 'nullable|string|max:100',
'status' => 'required|in:draft,published',
'description' => 'nullable|string',
]);
$newspaper->update($data);
return redirect()->route('admin.newspapers.index')
->with('success', 'Newspaper updated successfully.');
}
public function destroy(Newspaper $newspaper)
{
foreach ($newspaper->pages as $page) {
if (\Storage::disk('public')->exists($page->image_path)) {
\Storage::disk('public')->delete($page->image_path);
}
if ($page->thumbnail_path && \Storage::disk('public')->exists($page->thumbnail_path)) {
\Storage::disk('public')->delete($page->thumbnail_path);
}
}
$newspaper->delete();
return redirect()->route('admin.newspapers.index')
->with('success', 'Newspaper deleted.');
}
public function pages(Newspaper $newspaper)
{
$newspaper->load(['pages' => fn($q) => $q->orderBy('sort_order')->orderBy('page_number')]);
return view('admin.newspapers.pages', compact('newspaper'));
}
}