api action delete add, slug generator update
This commit is contained in:
		| @@ -38,6 +38,20 @@ class RestController | ||||
|         $this->renderApi($res); | ||||
|     } | ||||
|  | ||||
|     #[NoReturn] public function actionDelete($id): void | ||||
|     { | ||||
|         $model = $this->model->where("id", $id)->first(); | ||||
|         $res = []; | ||||
|         if ($model){ | ||||
|             $res = $model->toArray(); | ||||
|         } | ||||
|  | ||||
|         $model->delete(); | ||||
|  | ||||
|         $this->renderApi($res); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     #[NoReturn] protected function renderApi(array $data): void | ||||
|     { | ||||
|         header("Content-Type: application/json"); | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
| namespace kernel\modules\post\controllers; | ||||
|  | ||||
| use Illuminate\Database\Eloquent\Model; | ||||
| use JetBrains\PhpStorm\NoReturn; | ||||
| use kernel\modules\post\models\Post; | ||||
| use kernel\RestController; | ||||
|  | ||||
| @@ -13,7 +14,7 @@ class PostRestController extends RestController | ||||
|         $this->model = new Post(); | ||||
|     } | ||||
|  | ||||
|     public function actionView($id): void | ||||
|     #[NoReturn] public function actionView($id): void | ||||
|     { | ||||
|         $model = $this->model->where("id", $id)->first(); | ||||
|         $model->load("user"); | ||||
| @@ -24,4 +25,19 @@ class PostRestController extends RestController | ||||
|  | ||||
|         $this->renderApi($res); | ||||
|     } | ||||
|  | ||||
|     #[NoReturn] public function actionDelete($id): void | ||||
|     { | ||||
|         $model = $this->model->where("id", $id)->first(); | ||||
|         $model->load("user"); | ||||
|         $res = []; | ||||
|         if ($model){ | ||||
|             $res = $model->toArray(); | ||||
|         } | ||||
|  | ||||
|         $model->delete(); | ||||
|  | ||||
|         $this->renderApi($res); | ||||
|  | ||||
|     } | ||||
| } | ||||
| @@ -27,6 +27,6 @@ App::$collector->group(["prefix" => "api"], function (RouteCollector $router){ | ||||
| //        App::$collector->get('/{id}', [\kernel\modules\post\controllers\PostController::class, 'actionView']); | ||||
| //        App::$collector->any('/update/{id}', [\kernel\modules\post\controllers\PostController::class, 'actionUpdate']); | ||||
| //        App::$collector->any("/edit/{id}", [\kernel\modules\post\controllers\PostController::class, 'actionEdit']); | ||||
| //        App::$collector->get('/delete/{id}', [\kernel\modules\post\controllers\PostController::class, 'actionDelete']); | ||||
|         App::$collector->get('/delete/{id}', [\kernel\modules\post\controllers\PostRestController::class, 'actionDelete']); | ||||
|     }); | ||||
| }); | ||||
| @@ -2,6 +2,7 @@ | ||||
|  | ||||
| namespace kernel\modules\post\service; | ||||
|  | ||||
| use kernel\helpers\Debug; | ||||
| use kernel\helpers\Slug; | ||||
| use kernel\modules\post\models\Post; | ||||
| use kernel\FormModel; | ||||
| @@ -14,7 +15,7 @@ class PostService | ||||
|         $model->content = $form_model->getItem('content'); | ||||
|         $model->user_id = $form_model->getItem('user_id'); | ||||
|         $model->title = $form_model->getItem('title'); | ||||
|         $model->slug = Slug::url_slug($form_model->getItem('title'), ['transliterate' => true, 'lowercase' => true]); | ||||
|         $model->slug = $this->createSlug($form_model); | ||||
|         if ($model->save()){ | ||||
|             return $model; | ||||
|         } | ||||
| @@ -22,6 +23,26 @@ class PostService | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     public function createSlug(FormModel $form_model): string | ||||
|     { | ||||
|         $slug = Slug::url_slug($form_model->getItem('title'), ['transliterate' => true, 'lowercase' => true]); | ||||
|         if (Post::where(['slug' => $slug])->exists()) { | ||||
|             $id = 1; | ||||
|             $tmpSlug = $slug . '-' . $id++; | ||||
|             $slug = $this->recursiveCreateSlug($slug, $tmpSlug, $id); | ||||
|         } | ||||
|         return $slug; | ||||
|     } | ||||
|  | ||||
|     protected function recursiveCreateSlug($slug, $tmpSlug, $id): string | ||||
|     { | ||||
|         if (Post::where(['slug' => $tmpSlug])->exists()) { | ||||
|             $tmpSlug = $slug . '-' . $id++; | ||||
|             $tmpSlug = $this->recursiveCreateSlug($slug, $tmpSlug, $id); | ||||
|         } | ||||
|         return $tmpSlug; | ||||
|     } | ||||
|  | ||||
|     public function update(FormModel $form_model, Post $post): false|Post | ||||
|     { | ||||
|         $post->content = $form_model->getItem('content'); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user