1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use App\Models\Article;
- class ArticleController extends Controller
- {
- function published() {
- return view("published", ["rows" => Article::published()->get()]);
- }
- function index() {
- $all = Article::all()->groupBy("status");
- $args = [
- "drafts" => $all[Article::STATUS_DRAFT] ?? null,
- "pending" => $all[Article::STATUS_PENDING] ?? null,
- "published" => $all[Article::STATUS_PUBLISHED] ?? null,
- "archive" => $all[Article::STATUS_ARCHIVE] ?? null
- ];
- return view("articles", $args);
- }
- function add() {
- return view("add_article_form");
- }
- function view(Article $article) {
- return view("article", [
- "article" => $article->load([
- "comments" => function($query) { $query->recent(); }
- ])
- ]);
- }
- function edit(Article $article) {
- return view("edit_article_form", ["article" => $article]);
- }
- function store(Request $request) {
- $request->validate([
- "id" => "nullable|exists:articles",
- "title" => "required",
- "description" => "nullable",
- "content" => "required",
- "status" => "required",
- "publish_at" => "nullable",
- "unpublish_at" => "nullable"
- ], [
- "name" => "Публикация должна иметь название.",
- "content" => "Публикация должна иметь текст."
- ]);
- $arr = $request;
- $article = Article::find($arr->id) ?? new Article;
- $article->title = $arr->title;
- $article->description = $arr->description ?? explode(".", $arr->content)[0];
- $article->content = $arr->content;
- $article->status = $arr->status;
- $article->publish_at = $arr->publish_at;
- $article->unpublish_at = $arr->unpublish_at;
- $article->save();
- return view("success");
- }
- function comment(Article $article, Request $request) {
- $request->validate([
- "name" => "required",
- "email" => "required|email",
- "content" => "required"
- ], [
- "name" => "Укажите ваше имя.",
- "email" => "Укажите ваш email.",
- "content" => "Введите комментарий."
- ]);
- $arr = $request;
- $article->comments()->create([
- "name" => $arr->name,
- "email" => $arr->email,
- "content" => $arr->content
- ]);
- return view("success");
- }
- function drop(Article $article) {
- $article->delete();
- return view("success");
- }
- }
|