묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
모듈 member 를 수정하다가 잘 안되서 질문드립니다.
2007.10.30 19:53
모듈 member 를 고치는 과정에서 원하는 결과가 나오지 않아서 질문 드립니다.
질문 1
member.controller.php 의 procMemberFindAccount() 마지막 라인을 다음과 같이 수정하여서
$this->setTemplateFile('completeFindMemberAccount');
해당 act 가 처리된 후 skin 폴더의 completeFindMemberAccount.html 파일이 출력되게 하고 싶었으나
작동하지 않더군요.
view -> 필터 -> proc -> js 순으로 동작하는 것으로 파악하였는 데
act 들이 호출된 이후에는 display 함수가 호출되어 화면을 그려주는 것 아닌가요?
view 만 그런 것인지 ;;;;
질문 2
모듈 member 에 member.view.php 에 다음의 act를 추가했습니다.
function dispMemberCompleteFindAccount() {
$this->setTemplateFile('completeFindMemberAccount');
}
member.class.php 의 moduleInstall() 에 다음과 같이 입력했습니다.
$oModuleController->insertActionForward('member', 'view', 'dispMemberCompleteFindAccount');
modules/member/conf/module.xml 에 다음과 같이 추가하였습니다.
<action name="dispMemberCompleteFindAccount" type="view" standalone="true" />
그리고 member.js 의 function completeFindMemberAccount 를 수정하여서 다음과 같이 입력하였습니다.
location.href = current_url.setQuery('act','dispMemberCompleteFindAccount');
결과적으로 url 은 http://localhost/?mid=main&act=dispMemberCompleteFindAccount 으로 지정되는 데
해당 act 를 찾지를 못하고 메인화면으로 표시 됩니다.
act를 등록하는 방법이 잘못된 것 같은 데 추가 방법을 알고 싶습니다. ㅜㅠ
질문 1
member.controller.php 의 procMemberFindAccount() 마지막 라인을 다음과 같이 수정하여서
$this->setTemplateFile('completeFindMemberAccount');
해당 act 가 처리된 후 skin 폴더의 completeFindMemberAccount.html 파일이 출력되게 하고 싶었으나
작동하지 않더군요.
view -> 필터 -> proc -> js 순으로 동작하는 것으로 파악하였는 데
act 들이 호출된 이후에는 display 함수가 호출되어 화면을 그려주는 것 아닌가요?
view 만 그런 것인지 ;;;;
질문 2
모듈 member 에 member.view.php 에 다음의 act를 추가했습니다.
function dispMemberCompleteFindAccount() {
$this->setTemplateFile('completeFindMemberAccount');
}
member.class.php 의 moduleInstall() 에 다음과 같이 입력했습니다.
$oModuleController->insertActionForward('member', 'view', 'dispMemberCompleteFindAccount');
modules/member/conf/module.xml 에 다음과 같이 추가하였습니다.
<action name="dispMemberCompleteFindAccount" type="view" standalone="true" />
그리고 member.js 의 function completeFindMemberAccount 를 수정하여서 다음과 같이 입력하였습니다.
location.href = current_url.setQuery('act','dispMemberCompleteFindAccount');
결과적으로 url 은 http://localhost/?mid=main&act=dispMemberCompleteFindAccount 으로 지정되는 데
해당 act 를 찾지를 못하고 메인화면으로 표시 됩니다.
act를 등록하는 방법이 잘못된 것 같은 데 추가 방법을 알고 싶습니다. ㅜㅠ
댓글 2
-
BNU
2007.10.31 09:02
-
브루펜시럽
2007.10.31 15:36
모듈에 임의로 추가한 act 등록하는 방법
DB의 ActionForward 테이블에 새로 작성한 act를 등록해야지만 모듈 정보가 없을 때 해당 act를 호출할 수 있습니다.
modules/{module_name}/{module_name}.view.php 혹은 {module_name}.controller.php 에
이미 원하는 act 에 대한 코드를 추가했다는 가정하에 다음과 같은 순서대로 코드를 추가하시면 됩니다.
- modules/{module_name}/{module_name}.class.php
function moduleUpdate() {
$oModuleController->insertActionForward('{module_name}', '{view|controller}', '{act_name}');
}
function checkUpdate() {
...
$act = $oModuleModel->getActionForward('{act_name}');
if(!$act) return true;
...
}
- modules/{module_name}/conf/module.xml
<module>
<actions>
...
<action name="{act_name}" type="{view|controller}" standalone="true" />
...
</actions>
</module>
예를 들어서 member 모듈에 dispMemberCopleteFindAccount 를 추가하려면 다음과 같이 합니다.
- modules/member/member.class.php
function moduleUpdate() {
$oModuleController->insertActionForward('member', 'view', 'dispMemberCompleteFindAccount');
}
function checkUpdate() {
...
$act = $oModuleModel->getActionForward('dispMemberCompleteFindAccount');
if(!$act) return true;
...
}
- modules/{module_name}/conf/module.xml
<module>
<actions>
...
<action name="dispMemberCompleteFindAccount" type="view" standalone="true" />
...
</actions>
</module>
이제 관리자 페이지에서 모듈 란에 가시면 모듈 리스트에 해당 모듈의 정보 옆에 업데이트 버튼이 생깁니다.
업데이트 버튼을 누르면 moduleUpdate() 가 호출되면서 ActionForward 테이블에 해당 act 정보가 추가됩니다.
controller에서는 데이터의 입/출력 처리정도만 하기 때문에 화면 출력에는 관여하지 못하구요.
#2
보기에는 문제는 없어보이는데.. 캐시파일을 재생성 해보시길..