102 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace kernel\modules\option\controllers;
 | |
| 
 | |
| use JetBrains\PhpStorm\NoReturn;
 | |
| use kernel\AdminController;
 | |
| use kernel\helpers\Debug;
 | |
| use kernel\modules\option\models\forms\CreateOptionForm;
 | |
| use kernel\modules\option\models\Option;
 | |
| use kernel\modules\option\service\OptionService;
 | |
| 
 | |
| class OptionController extends AdminController
 | |
| {
 | |
| 
 | |
|     private OptionService  $optionService;
 | |
| 
 | |
|     public function init(): void
 | |
|     {
 | |
|         parent::init();
 | |
|         $this->cgView->viewPath = KERNEL_MODULES_DIR . '/option/views/';
 | |
|         $this->optionService = new OptionService();
 | |
|     }
 | |
| 
 | |
|     public function actionCreate(): void
 | |
|     {
 | |
|         $this->cgView->render('form.php');
 | |
|     }
 | |
| 
 | |
|     #[NoReturn] public function actionAdd(): void
 | |
|     {
 | |
|         $optionForm = new CreateOptionForm();
 | |
|         $optionForm->load($_REQUEST);
 | |
|         if ($optionForm->validate()) {
 | |
|             $option = $this->optionService->create($optionForm);
 | |
|             if ($option) {
 | |
|                 $this->redirect('/admin/option');
 | |
|             }
 | |
|         }
 | |
|         $this->redirect('/admin/option/create');
 | |
|     }
 | |
| 
 | |
|     public function actionIndex($page_number = 1): void
 | |
|     {
 | |
|         $this->cgView->render('index.php', ['page_number' => $page_number]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @throws \Exception
 | |
|      */
 | |
|     public function actionView(int $id): void
 | |
|     {
 | |
|         $option = Option::find($id);
 | |
| 
 | |
|         if (!$option) {
 | |
|             throw new \Exception('Option not found');
 | |
|         }
 | |
|         $this->cgView->render("view.php", ['option' => $option]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @throws \Exception
 | |
|      */
 | |
|     public function actionUpdate(int $id): void
 | |
|     {
 | |
|         $model = Option::find($id);
 | |
| 
 | |
|         if (!$model) {
 | |
|             throw new \Exception('Option not found');
 | |
|         }
 | |
| 
 | |
|         $this->cgView->render("form.php", ['model' => $model]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @throws \Exception
 | |
|      */
 | |
|     public function actionEdit(int $id): void
 | |
|     {
 | |
|         Debug::prn($_REQUEST);
 | |
|         $option = Option::find($id);
 | |
|         if (!$option) {
 | |
|             throw new \Exception('Option not found');
 | |
|         }
 | |
|         $optionForm = new CreateOptionForm();
 | |
|         $optionService = new OptionService();
 | |
|         $optionForm->load($_REQUEST);
 | |
|         if ($optionForm->validate()) {
 | |
|             $option = $optionService->update($optionForm, $option);
 | |
|             if ($option) {
 | |
|                 $this->redirect('/admin/option' . $option->id);
 | |
|             }
 | |
|         }
 | |
|         $this->redirect('/admin/option/update' . $id);
 | |
|     }
 | |
| 
 | |
|     #[NoReturn] public function actionDelete(int $id): void
 | |
|     {
 | |
|         Option::find($id)->delete();
 | |
|         $this->redirect('/admin/option');
 | |
|     }
 | |
| 
 | |
| } |