현재 요청의 module, act 를 가져올 방법이 있을까요?
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 8.3 |
현재 요청의 module, act 를 정확히 가져올 수 있는 API가 있을까요?
요청된 module, act 말고, 실제로 실행된 것이요.
예를 들어 사이트 첫 페이지나, 게시판 목록 같은 경우...
module, mid 정도는 얻을 수 있지만 dispBoardContent, dispPageIndex(였나) 이런건 확인이 안 되네요.
Context::all() 등으로 다 찍어봐도 찾을 수가 없네요.
요청된 module, act 말고 실제로 실행된 정보를 얻고 싶습니다.
ModuleHandler 클래스에 act 같은 멤버변수가 있긴한데 저 인스턴스를 가져올 수도 없는 것같네요.
ModuleHandler::procModule() 에서 최종적으로 act가 확정되는 것같네요
if(!$this->act)
{
$this->act = $xml_info->default_index_act;
}
module 도 procModule 안에서 최종 확정되는 것같고요.
근데 이걸 어떻게 접근해서 가져올까요?

kkigomi
Lv. 2
댓글 4
라이믹스 최신 버전 기준으로 Context::getCurrentRequest() 하면 R\F\Request 클래스의 인스턴스가 반환되고, 여기에 module, mid, act 및 라우팅 정보가 담겨 있습니다. 모듈 클래스나 템플릿에서는 $this->request 도 동일한 내용입니다. 현재 요청의 속성을 확인하는 가장 오피셜한 방법입니다.
단, 각 모듈의 인덱스 페이지인 경우에는 원래 act가 없습니다. act가 없으면 모듈 정보를 뒤져서 dispBoardContent, dispPageIndex 등 해당 모듈의 인덱스 act를 대신 실행하는 것입니다. 따라서 코어에서도 "현재 act가 없다!" 라고 하지, "현재 act는 dispPageIndex이다!" 라고 인식하지는 않습니다. ModuleModel에서 해당 모듈 정보를 불러와서 인덱스 act가 무엇인지 찾아야 하지요.
물론 이 경우에도 해당 액션을 호출하기 직전 $this->act에 메소드명이 셋팅되므로, 그 후에 $current_module_info->act를 찍어보면 값이 들어가 있을 가능성이 높습니다.
`\Context::getCurrentRequest()` 이걸 확인해봐도 아래와 같은 요청 정보만 나오네요.
결국 ModuleHandler::procModule() 메소드 안에서만 확인이 가능한 것같아 보이네요. 😭
(
[method] => GET
[compat_method] => GET
[url] => board
[hostname] => rhymix.local
[domain] =>
[protocol] => https
[callback_function] =>
[_route_status:protected] => 200
[_route_options:protected] => stdClass Object
(
[cache_control] => 1
[check_csrf] => 1
[is_forwarded] =>
[is_indexable] => 1
[enable_session] => 1
)
[module] =>
[mid] => board
[act] =>
[args] => Array
(
[mid] => board
)
)
`moduleHandler.init` before 트리거에서 전달해주는 ModuleHandler 인스턴스를 참조로 저장해놨다가 끌어다 쓰니까 나오네요 🤩
그래도 이게 API가 있으면 좋겠네요.
https://xetown.com/download/1801192
이 모듈 업데이트 하는데 사용했습니다.
https://github.com/rhymix-guide/module-debugbar/commit/64d3b2cca259ab5e6cbbdcb6edf54908af3f69f5#diff-95eefaa38127658ac32d95528023a686627eee008d4d6161d316aeb420f3b870
첫 페이지에서는 나오는데 메뉴에 걸린 /index 로 가니까 이것만 안 나오네요. 🤔