제목 | 컨트롤러에서 모델 인스턴스를 동적으로 로드하고싶습니다 | ||
---|---|---|---|
카테고리 | CI 4 관련 | ||
글쓴이 | dg_dong | 작성시각 | 2022/01/19 17:52:26 |
|
|||
접속 URL EX) http://localhost/user/top http://localhost/user/center http://localhost/user/bottom
Routes.php EX) $routes->group('user',function($routes){ $routes->get('(:segment)' ,'Api\User::search/$1');} ); 접속한 segment를 활용해 new TopModel , new CenterModel ,new BottomModel 모델 인스턴스를 동적으로 만들수있는 방법이 있을까요? Top , Center , Bottom 이 부분을 segment값으로 대체하고 싶습니다
현재는 switch문으로 분기해서 작업 했습니다 switch($cd){ case 'Top' : $model = new TopModel; break; case 'Center' : $model = new CenterModel; break; case 'Bottom' : $model = new BottonModel; break; } return $this->setResponseFormat('json')->respond([$model->findAll()]);
|
|||
다음글 | Docker기반 환경에서 CI4와 DB 접속이 안되는 ... (2) | ||
이전글 | ci zip 문의 (1) | ||
츠츤츤
/
2022/01/20 10:03:20 /
추천
0
저도 궁금합니다. 그리고 ci3에서는 모델에 함수를 만들고 값을 넘겨 분기처리를 하였는데요. ci4에선 db table 별로 모델클래스를 새로 만들고 컨트롤 단에서 분기처리해야하는지 궁금합니다.
|
한대승(불의회상)
/
2022/01/20 11:11:15 /
추천
0
$modelName = $cd.'Model'; $model = new $modelName; |
테러보이
/
2022/01/20 13:15:16 /
추천
0
가정 윗줄에 use로 모델은 불러오셨을거고 그렇다면 다음과 같은 코드가 되야겠지요. switch($cd){ case 'top' : $model = new TopModel(); break; case 'center' : $model = new CenterModel(); break; case 'bottom' : $model = new BottonModel(); break; } return $this->setResponseFormat('json')->respond([$model->findAll()]);
|