| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use Carbon\Carbon;
- use App\Models\Post;
- class PostController extends Controller
- {
- public function index(){
- return view('posts.index', ['posts' => Post::latest()->get()]);
- }
- public function create(){
- return view('posts.edit');
- }
- public function show(Post $post){
- return view('posts.show', compact('post'));
- }
-
- public function edit(Post $post){
- return view('posts.edit', compact('post'));
- }
-
- public function update(Request $request, Post $post){
- $validated = $request->validate([
- 'title' => 'required|string|max:255',
- 'content' => 'required|string',
- 'published_at' => 'nullable|date',
- ]);
- if ($request->filled('published_at')) {
- $validated['published_at'] = Carbon::parse($request->published_at, $request->timezone)
- ->setTimezone('UTC');
- }
- $wasPublished = $post->is_published;
- $post->fill($validated);
- $post->is_published = $request->has('is_published');
-
- $post->save();
- if (!$wasPublished && $post->is_published) {
- if (!$post->published_at) {
- $post->update(['published_at' => now()]);
- }
- }
- return redirect()
- ->route('posts.index')
- ->with('success', 'Пост успешно обновлен!');
- }
- public function store(Request $request){
- $data = $request->validate([
- 'title' => 'required',
- 'content' => 'required',
- 'published_at' => 'nullable|date'
- ]);
- if ($request->filled('published_at')) {
- $data['published_at'] = Carbon::parse($request->published_at, $request->timezone)
- ->setTimezone('UTC');
- }
- Post::create($data);
- return redirect()->route('posts.index')->with('success', 'Готово!');
- }
- public function togglePublish($id){
- $post = Post::findOrFail($id);
- $post->is_published = !$post->is_published;
- if ($post->is_published){
- $post->published_at = now();
- }
- $post->save();
- return back();
- }
- }
|