Files
sam-manage/app/Http/Controllers/TenantConsoleController.php
강영보 d03c7ed870 feat: [bending] 절곡품 관리 MNG 화면
- 기초관리: 목록(13컬럼) + 폼(기본정보 + 케이스전용 + 절곡테이블 + 이미지)
- 절곡품: 가이드레일/케이스/하단마감재 타입별 목록 + 폼
- 부품 추가(기초관리 검색 모달) + 삭제 + 수량/품명/재질 편집
- 절곡테이블 inline 편집 + 재질별 폭합 자동계산
- 작업지시서 레거시 포맷 인쇄 모달
- 원본수정 버튼 sam_item_id 직접 링크
- DB 메뉴 등록 (기초관리 + 절곡품 + 케이스 + 하단마감재)
2026-03-19 21:08:57 +09:00

63 lines
2.0 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Tenants\Tenant;
use Illuminate\Http\Request;
use Illuminate\Routing\Router;
use Illuminate\View\View;
class TenantConsoleController extends Controller
{
/**
* 테넌트 콘솔 대시보드 (새창 진입점)
*/
public function index(Request $request, int $tenantId): View
{
$tenant = $request->attributes->get('tenant_console');
return view('tenant-console.index', [
'tenant' => $tenant,
'tenantId' => $tenantId,
]);
}
/**
* Catch-all: 메인 라우트의 컨트롤러를 찾아서 실행
* /tenant-console/{tenantId}/{path} → /{path} 에 매칭되는 메인 라우트 컨트롤러 호출
*/
public function dispatch(Request $request, int $tenantId, string $path)
{
$url = '/' . ltrim($path, '/');
$method = $request->method();
// 메인 라우트에서 매칭되는 라우트 찾기
$fakeRequest = Request::create($url, $method, $request->all());
$fakeRequest->headers->replace($request->headers->all());
try {
$route = app(Router::class)->getRoutes()->match($fakeRequest);
} catch (\Symfony\Component\HttpKernel\Exception\NotFoundHttpException $e) {
abort(404, "라우트를 찾을 수 없습니다: {$url}");
} catch (\Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException $e) {
abort(405, "허용되지 않는 메서드: {$method} {$url}");
}
$action = $route->getAction();
if (! isset($action['uses']) || ! is_string($action['uses'])) {
abort(404);
}
// 라우트 파라미터 바인딩
$route->bind($fakeRequest);
$params = $route->parameters();
// 컨트롤러 실행
[$controllerClass, $controllerMethod] = explode('@', $action['uses']);
$controller = app($controllerClass);
return app()->call([$controller, $controllerMethod], $params);
}
}