모듈 작업시 Controller 요청시 ERR_ACT_NOT_FOUND
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 8.2 |
현재 corpname 이라는 모듈을 만들어서 별도의 기능을 추가할 목적으로 통합 모듈을 만들었습니다.
컨트롤러에서는
public function procSetHeadManager(){}
를 만들고, module.xml에도
<action name="procSetHeadManager" type="controller" method="POST" standalone="false"/>
와 같이 지정해줬습니다.
자바스크립트로 버튼을 눌렀을 때
function setHeadManager(document_srl){
if (!confirm("업무 담당자를 지정하시겠습니까?")) return;
const selectBox = document.getElementById("head_manager");
const selectedValue = selectBox.value;
exec_json("corpname.procSetHeadManager", { document_srl: document_srl, h_manager: selectedValue }, function (data) {
location.reload();
});
}
을 하였더니, 잘못된 요청이라며 ERR_ACT_NOT_FOUND가 뜨는데요.
캐시도 삭제해줬는데 어떤게 문제일까요 ㅜ_ㅜ
혹시 추가적으로 뭔가 해줘야 할게 있을까요?
얼음조각티
Lv. 3
:)
댓글 2
해결했습니다.
컨트롤러의 항상 시작은 proc[모듈명]blabla--> procCorpnameSetHeadManager 을 해야하는군요...
document_srl이 있는 경우, 무조건 해당 문서가 소속된 모듈(매우 높은 확률로 board)의 문맥에서 실행됩니다.
exec_json으로 넘긴 모듈명은 무시되죠.
이 때 다른 모듈의 act를 호출하려면
act에서 모듈명을 분리해 내는 아주 오래된 로직에 의존하는 수밖에 없습니다.
아마 document_srl이 없다면 동작이 달라질 거라고 예상됩니다.
하위호환성 때문에 쉽게 바꿀 수도 없는 부분이라,
코어에서도 상당수의 모듈들이 document_srl이라는 변수명을 회피하고
target_srl 등 다른 이름으로 전달하곤 합니다.