From e574e3226f579a340303798af77c654d907730f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=ED=9D=A0?= Date: Wed, 19 Nov 2025 16:00:59 +0900 Subject: [PATCH] dbmsv4 init...1 --- app/Config/Routes.php | 40 ++++++++-------- app/Controllers/AbstractCRUDController.php | 8 +++- app/Controllers/AbstractWebController.php | 53 ++++------------------ app/Controllers/Admin/UserController.php | 2 + 4 files changed, 38 insertions(+), 65 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 21f6d60..5e72e70 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -27,7 +27,7 @@ $routes->group('', ['namespace' => 'App\Controllers'], function ($routes) { //Admin 관련 $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:manager'], function ($routes) { $routes->get('/', 'Home::welcome'); - $routes->group('user', ['namespace' => 'App\Controllers\Admin'], function ($routes) { + $routes->group('user', function ($routes) { $routes->get('/', 'UserController::index'); $routes->get('create', 'UserController::create_form'); $routes->post('create', 'UserController::create'); @@ -40,7 +40,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'UserController::batchjob_delete', ['filter' => 'authFilter:master']); $routes->get('download/(:alpha)', 'UserController::download/$1'); }); - $routes->group('mylog', ['namespace' => 'App\Controllers\Admin'], function ($routes) { + $routes->group('mylog', function ($routes) { $routes->get('/', 'MylogController::index'); $routes->get('create', 'MylogController::create_form'); $routes->post('create', 'MylogController::create'); @@ -53,10 +53,10 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'MylogController::batchjob_delete'); $routes->get('download/(:alpha)', 'MylogController::download/$1'); }); - $routes->group('search', ['namespace' => 'App\Controllers\Admin'], function ($routes) { + $routes->group('search', function ($routes) { $routes->get('/', 'SearchController::index'); }); - $routes->group('board', ['namespace' => 'App\Controllers\Admin'], function ($routes) { + $routes->group('board', function ($routes) { $routes->get('/', 'BoardController::index'); $routes->get('create', 'BoardController::create_form'); $routes->post('create', 'BoardController::create'); @@ -71,7 +71,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->get('notice', 'BoardController::notice'); $routes->get('reqeusttask', 'BoardController::reqeusttask'); }); - $routes->group('payment', ['namespace' => 'App\Controllers\Admin'], function ($routes) { + $routes->group('payment', function ($routes) { $routes->get('/', 'PaymentController::index'); //일회성결제관련용 $routes->get('create', 'PaymentController::create_form'); @@ -91,7 +91,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au }); //Customer 관련 $routes->group('customer', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) { - $routes->group('client', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) { + $routes->group('client', function ($routes) { $routes->get('/', 'ClientController::index'); $routes->get('create', 'ClientController::create_form'); $routes->post('create', 'ClientController::create'); @@ -106,7 +106,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->get('detail/(:num)', 'ClientController::detail/$1'); $routes->post('history/(:num)', 'ClientController::history/$1'); }); - $routes->group('account', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) { + $routes->group('account', function ($routes) { $routes->get('/', 'AccountController::index'); $routes->get('create', 'AccountController::create_form'); $routes->post('create', 'AccountController::create'); @@ -119,7 +119,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'AccountController::batchjob_delete'); $routes->get('download/(:alpha)', 'AccountController::download/$1'); }); - $routes->group('coupon', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) { + $routes->group('coupon', function ($routes) { $routes->get('/', 'CouponController::index'); $routes->get('create', 'CouponController::create_form'); $routes->post('create', 'CouponController::create'); @@ -132,7 +132,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'CouponController::batchjob_delete'); $routes->get('download/(:alpha)', 'CouponController::download/$1'); }); - $routes->group('point', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) { + $routes->group('point', function ($routes) { $routes->get('/', 'PointController::index'); $routes->get('create', 'PointController::create_form'); $routes->post('create', 'PointController::create'); @@ -145,7 +145,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'PointController::batchjob_delete'); $routes->get('download/(:alpha)', 'PointController::download/$1'); }); - $routes->group('service', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) { + $routes->group('service', function ($routes) { $routes->get('/', 'ServiceController::index'); $routes->get('create', 'ServiceController::create_form'); $routes->post('create', 'ServiceController::create'); @@ -167,7 +167,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au //Customer 관련 //Equipment 관련 $routes->group('equipment', ['namespace' => 'App\Controllers\Admin\Equipment'], function ($routes) { - $routes->group('line', ['namespace' => 'App\Controllers\Admin\Equipment'], function ($routes) { + $routes->group('line', function ($routes) { $routes->get('/', 'LineController::index'); $routes->get('create', 'LineController::create_form'); $routes->post('create', 'LineController::create'); @@ -180,7 +180,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'LineController::batchjob_delete'); $routes->get('download/(:alpha)', 'LineController::download/$1'); }); - $routes->group('server', ['namespace' => 'App\Controllers\Admin\Equipment'], function ($routes) { + $routes->group('server', function ($routes) { $routes->get('/', 'ServerController::index'); $routes->get('create', 'ServerController::create_form'); $routes->post('create', 'ServerController::create'); @@ -193,7 +193,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'ServerController::batchjob_delete'); $routes->get('download/(:alpha)', 'ServerPartController::download/$1'); }); - $routes->group('serverpart', ['namespace' => 'App\Controllers\Admin\Equipment'], function ($routes) { + $routes->group('serverpart', function ($routes) { $routes->get('/', 'ServerPartController::index'); $routes->get('create', 'ServerPartController::create_form'); $routes->post('create', 'ServerPartController::create'); @@ -210,7 +210,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au //Equipment 관련 //Part 관련 $routes->group('part', ['namespace' => 'App\Controllers\Admin\Part'], function ($routes) { - $routes->group('switch', ['namespace' => 'App\Controllers\Admin\Part'], function ($routes) { + $routes->group('switch', function ($routes) { $routes->get('/', 'SWITCHController::index'); $routes->get('create', 'SWITCHController::create_form'); $routes->post('create', 'SWITCHController::create'); @@ -223,7 +223,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'SWITCHController::batchjob_delete'); $routes->get('download/(:alpha)', 'SWITCHController::download/$1'); }); - $routes->group('ip', ['namespace' => 'App\Controllers\Admin\Part'], function ($routes) { + $routes->group('ip', function ($routes) { $routes->get('/', 'IPController::index'); $routes->get('create', 'IPController::create_form'); $routes->post('create', 'IPController::create'); @@ -236,7 +236,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'IPController::batchjob_delete'); $routes->get('download/(:alpha)', 'IPController::download/$1'); }); - $routes->group('cs', ['namespace' => 'App\Controllers\Admin\Part'], function ($routes) { + $routes->group('cs', function ($routes) { $routes->get('/', 'CSController::index'); $routes->get('create', 'CSController::create_form'); $routes->post('create', 'CSController::create'); @@ -249,7 +249,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'CSController::batchjob_delete'); $routes->get('download/(:alpha)', 'CSController::download/$1'); }); - $routes->group('cpu', ['namespace' => 'App\Controllers\Admin\Part'], function ($routes) { + $routes->group('cpu', function ($routes) { $routes->get('/', 'CPUController::index'); $routes->get('create', 'CPUController::create_form'); $routes->post('create', 'CPUController::create'); @@ -262,7 +262,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'CPUController::batchjob_delete'); $routes->get('download/(:alpha)', 'CPUController::download/$1'); }); - $routes->group('ram', ['namespace' => 'App\Controllers\Admin\Part'], function ($routes) { + $routes->group('ram', function ($routes) { $routes->get('/', 'RAMController::index'); $routes->get('create', 'RAMController::create_form'); $routes->post('create', 'RAMController::create'); @@ -275,7 +275,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'RAMController::batchjob_delete'); $routes->get('download/(:alpha)', 'RAMController::download/$1'); }); - $routes->group('disk', ['namespace' => 'App\Controllers\Admin\Part'], function ($routes) { + $routes->group('disk', function ($routes) { $routes->get('/', 'DISKController::index'); $routes->get('create', 'DISKController::create_form'); $routes->post('create', 'DISKController::create'); @@ -289,7 +289,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->get('download/(:alpha)', 'DISKController::download/$1'); $routes->get('complete/(:num)', 'DISKController::complete/$1'); }); - $routes->group('software', ['namespace' => 'App\Controllers\Admin\Part'], function ($routes) { + $routes->group('software', function ($routes) { $routes->get('/', 'SOFTWAREController::index'); $routes->get('create', 'SOFTWAREController::create_form'); $routes->post('create', 'SOFTWAREController::create'); diff --git a/app/Controllers/AbstractCRUDController.php b/app/Controllers/AbstractCRUDController.php index 37c7270..a72cf34 100644 --- a/app/Controllers/AbstractCRUDController.php +++ b/app/Controllers/AbstractCRUDController.php @@ -34,7 +34,9 @@ abstract class AbstractCRUDController extends AbstractWebController protected function create_result_process(CommonEntity $entity): string|RedirectResponse { - return $this->action_modal_process("{$this->getTitle()}에서 {$entity->getTitle()} 생성이 완료되었습니다."); + return redirect()->to( + '/' . implode('/', [...$this->getActionPaths(), 'view']) . '/' . $entity->getPK() + )->with('message', "{$this->getTitle()}에서 {$entity->getTitle()} 생성이 완료되었습니다."); } // --- 수정 (Modify) --- @@ -64,7 +66,9 @@ abstract class AbstractCRUDController extends AbstractWebController protected function modify_result_process(CommonEntity $entity): string|RedirectResponse { - return $this->action_modal_process("{$this->getTitle()}에서 {$entity->getTitle()} 수정이 완료되었습니다."); + return redirect()->to( + '/' . implode('/', [...$this->getActionPaths(), 'view']) . '/' . $entity->getPK() + )->with('message', "{$this->getTitle()}에서 {$entity->getTitle()} 수정이 완료되었습니다."); } // --- 삭제 (Delete) --- diff --git a/app/Controllers/AbstractWebController.php b/app/Controllers/AbstractWebController.php index d902d9b..1fefdfb 100644 --- a/app/Controllers/AbstractWebController.php +++ b/app/Controllers/AbstractWebController.php @@ -11,9 +11,11 @@ use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; /** - * AbstractWebController - * 모든 웹 컨트롤러의 최상위 추상 클래스. - * 공통 초기화, 뷰 데이터 관리, 리다이렉션/렌더링 로직을 담당합니다. (SRP: Utility & Presentation Layer) + * CommonController + * + * 이 클래스를 상속받는 모든 자식 클래스(UserController 등)는 + * 반드시 'PATH' 상수를 가지고 있음을 IDE에 알려줍니다. + * * @property-read string PATH // ⭐ 이 부분이 핵심입니다. */ abstract class AbstractWebController extends Controller { @@ -86,38 +88,6 @@ abstract class AbstractWebController extends Controller /** * 액션 성공 후 모달을 닫고 부모 창을 리로드하는 스크립트를 반환합니다. */ - protected function action_modal_process(string $message): string - { - return " - - "; - } - - /** - * 액션 결과에 따라 지정된 메시지와 URL로 리다이렉션합니다. - */ protected function action_redirect_process(string $type, string $message, ?string $redirect_url = null): RedirectResponse { switch ($type) { @@ -126,14 +96,11 @@ abstract class AbstractWebController extends Controller case 'critical': case 'alert': case 'emergency': - log_message($type, $message); - $result = $redirect_url ? redirect()->to($redirect_url)->with('message', $message) : redirect()->back()->withInput()->with('message', $message); - break; case 'debug': case 'info': case 'notice': - default: log_message($type, $message); + default: $redirect_url = $redirect_url ?? $this->getAuthContext()->popPreviousUrl() ?? implode(DIRECTORY_SEPARATOR, $this->getActionPaths()); $result = redirect()->to($redirect_url)->with('message', $message); break; @@ -146,11 +113,11 @@ abstract class AbstractWebController extends Controller */ protected function action_render_process(array $view_paths, string $view_file, array $viewDatas): string { - $full_path = implode(DIRECTORY_SEPARATOR, $view_paths); - $final_path = $this->request->getVar('ActionTemplate'); - if ($final_path) { - $full_path .= DIRECTORY_SEPARATOR . $final_path; + $self_path = array_pop($view_paths); + if ($path = $this->request->getVar('ActionTemplate')) { + $view_paths[] = $path; } + $full_path = implode(DIRECTORY_SEPARATOR, $view_paths); $view_datas = [ ...$viewDatas, 'forms' => ['attributes' => ['method' => "post",], 'hiddens' => []], diff --git a/app/Controllers/Admin/UserController.php b/app/Controllers/Admin/UserController.php index c09141d..df2dfed 100644 --- a/app/Controllers/Admin/UserController.php +++ b/app/Controllers/Admin/UserController.php @@ -13,12 +13,14 @@ use RuntimeException; class UserController extends AdminController { + public const PATH = 'user'; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); if ($this->service === null) { $this->service = service('userservice'); } + $this->addActionPaths(self::PATH); } //Action작업관련 protected function action_init_process(string $action): void