Bläddra i källkod

Article creation logic

Also make article content white-space: pre-wrap;
axkuhta 1 år sedan
förälder
incheckning
cbf3923589

+ 29 - 0
app/Http/Controllers/ArticleController.php

@@ -20,4 +20,33 @@ class ArticleController extends Controller
 			"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");
+	}
+
 }

+ 1 - 1
resources/views/add_article_form.blade.php

@@ -18,7 +18,7 @@
 	<div>
 		<label>
 			<div>Короткое описание:</div>
-			<textarea name="description" class="article-description-textarea" placeholder="Если оставить это поле пустым, то короткое описание будет сгенерировано автоматически из первой строки публикации...">{{ old("description") }}</textarea>
+			<textarea name="description" class="article-description-textarea" placeholder="Если оставить это поле пустым, то короткое описание будет сгенерировано автоматически из первого предложения публикации...">{{ old("description") }}</textarea>
 			@error("description")
 				<span class="alert">{{ $message }}</span>
 			@enderror

+ 1 - 1
resources/views/article.blade.php

@@ -3,5 +3,5 @@
 @section("content")
 <h1>{{$article->title}}</h1>
 <div>{{$article->publish_at}}</div>
-{!! $article->content !!}
+<div class="article-content">{!! $article->content !!}</div>
 @endsection

+ 4 - 0
resources/views/layouts/app.blade.php

@@ -135,6 +135,10 @@
 				height: 25ex;
 			}
 
+			.article-content {
+				white-space: pre-wrap;
+			}
+
 			pre {
 				overflow: scroll;
 			}

+ 1 - 0
routes/web.php

@@ -47,4 +47,5 @@ Route::get('/api/books', function() { return Resources\BookResource::collection(
 // Публикации
 Route::get('/articles', [Controllers\ArticleController::class, 'index']);
 Route::get('/article/add', [Controllers\ArticleController::class, 'add']);
+Route::post('/article/add', [Controllers\ArticleController::class, 'store']);
 Route::get('/article/{article}', [Controllers\ArticleController::class, 'view']);