5. Action

조회 수 723 추천 수 0 2011.01.17 12:43:50
SMaker *.22.160.57
제목 작성자 날짜
5. Action (current) SMaker 2011.01.17 12:43:50
복원
<h3 id="h1278147387141">Action 소개</h3><p>XpressEngine의 모든 입력과 출력은 index.php를 통해서 이루어집니다.</p><p>입력된 요청을 분석후 대상 Module을 찾은 후 그 Module의 어떤 동작을 해야 하는지 결정하는 것이 Action입니다.<br>보통 이 동작을 결정하는 Action은 Request Argument의 <strong>$act</strong> 변수값을 이용합니다..</p><p>이 Action에 대한 선언은 모듈의 ./conf/module.xml에 정의되어 있습니다.</p><p><b>Action 명세</b></p><div editor_component="code_highlighter" code_type="xml" class="code" style="display: block; ">&lt;?xml&nbsp;version="1.0"&nbsp;encoding="utf-8"?&gt;<br>
&lt;modules&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;grants&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;permissions&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;actions&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="dispFileAdminList"&nbsp;type="view"&nbsp;admin_index="true"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="dispFileAdminConfig"&nbsp;type="view"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileUpload"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileDownload"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileAdminDeleteChecked"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileAdminInsertConfig"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/actions&gt;<br>
&lt;/modules&gt;</div><ul><li>&lt;action ... /&gt; - Action의 선언<ul><li>name<ul><li>Action의 이름이며 이 이름은 해당 모듈의 method 이름이기도 합니다.</li><li>Action 이름에 Admin이라는 문자열이 포함되어 있으면 관리 권한이 있어야 동작하게 됩니다.</li></ul></li><li>type<ul><li>모듈을 구성하는 view, model, controller 중 어디에 선언되었는지를 정의합니다.</li><li>이 type을 이용하여 모듈.[!type].php 파일에서 지정된 method를 호출합니다.</li><li>Action 이름에 Admin 문자열이 포함되어 있으면 모듈.admin.[!type].php 파일에서 지정된 method를 호출합니다.</li></ul></li><li>standalone<ul><li>별도의 mid를 요청 받지 않고 모듈 자체로도 실행 가능한지 선언할 수 있습니다.</li><li>모든 모듈이 mid를 생성하지 않고 모듈 자체적으로 동작할 수도 있는데 이럴 경우 mid 없이 사용해도 된다는 것을 알립니다.</li><li>standalone이 true로 되어 있고 mid를 요청 받지 못한 경우 모듈 실행 시 에러를 출력하게 됩니다.</li></ul></li><li>index<ul><li>특정 모듈이 요청될 때 $act 값이 없거나 선언된 $act에 속하는 것이 없을 때 기본 Action으로 지정한다는 것입니다.</li><li>하나의 Action만 적용됩니다.</li></ul></li><li>admin_index<ul><li>Admin 모듈에서 특정 모듈의 관리자 view를 표시할 때 기본 관리자 view를 찾을 때 사용됩니다.</li></ul></li><li>setup_index<ul><li>모듈의 설정 페이지로 사용됩니다. (실제로 사용되고 있는지 알 수 없습니다)</li></ul></li></ul></li><li>&lt;permission ... /&gt; - Permission의 선언<ul><li>action<ul><li>모듈 실행 권한을 지정할 Action의 이름입니다.</li></ul></li><li>target<ul><li>모듈 실행 권한을 지정할 수 있습니다.<ul><li>member : 회원</li><li>manager : 관리자</li></ul></li></ul></li></ul></li></ul><h3 id="h1278147387141">Action 이용</h3><p>Action은 $act 라는 변수를 통해서 호출할 수 있습니다.</p><p>호출은 GET/ POST/ JSON/ XMLRPC 어떤 경우에도 act라는 이름을 이용하게 됩니다.</p><p>예) editor 모듈의 dispEditorPopup() 호출 (./modules/editor/editor.view.php)</p><blockquote class="citation"><p>?module=editor&amp;act=dispEditorPopup&amp;editor_sequence=1&amp;component=image_editor</p></blockquote><h3 id="h1278147387141">Action Forward</h3><p>일반적으로 XE의 Action은 모듈에 귀속됩니다.</p><p>즉 별다른 지시가 없을 경우 $act 변수에 의해 Action이 호출되면 현재 동작중인 모듈의 Action으로 인정이 되어 실행됩니다.</p><p>하지만 경우에 따라서 현재 동작중인 모듈이 아닌 다른 모듈의 Action이 호출될 경우가 있습니다.</p><p>&nbsp;</p><p>대표적인 예가 RSS 모듈입니다.</p><p>rss라는 Action은 게시판 모듈에서 정의된 Action이 아니지만 Action Forward 기능을 통해 호출되어 실행이 됩니다.</p><blockquote class="citation"><p>?mid=board&amp;act=rss</p></blockquote><p>Action Forward는 모듈 독립적인 기능을 수행하기를 원할때 사용할 수 있습니다.</p><p>위와 같은 요청의 경우 board 라는 mid를 찾게 되고 이 mid가 게시판 모듈의 mid일 경우 rss라는 Action이 없습니다.</p><p>이럴 경우 XE는 Action Forward 등록된 것중에 rss라는 것이 있는지 찾게 됩니다.</p><p>rss라는 Action은 RSS모듈의 View type으로 DB에 등록이 되어 있어서 XE는 board라는 mid의 정보를 모두 설정하고 나서 RSS 모듈의 View 객체를 생성해서 rss method를 실행하게 됩니다.</p><p>&nbsp;</p><p>이 Action Forward는 현재 요청된 모듈의 레이아웃이나 정보를 유지한채 다른 동작을 원할 경우 필요합니다.</p><p>다른 예로 친구 목록을 보는 Action은 Communication 모듈의 dispCommunicationFriend 라는 Action으로 동작을 합니다.</p><p>이 Action은 현재 보고 있는 모듈의 레이아웃등을 그대로 유지한채 내용을 친구 목록으로 대체합니다.</p><p>&nbsp;</p><p>즉 컨텐츠 영역을 약속된 Action에 따라서 바꾸어서 출력할 수도 있고 요청된 모듈의 정보를 바탕으로 다른 결과를 유도할 수도 있는 기능입니다.</p><p>&nbsp;</p><ul>
<li>
<p><strong>Action Forward의 등록</strong><br>보통 Action Forward는 모듈.class.php 에서 moduleInstall() 시에 저장이 됩니다.<br>아래와 같이 등록할 수가 있습니다.</p>
<ol class="code">
<li>$oModuleController = &amp;getController('module');<br>$oMdouleController-&gt;insertActionForward('모듈명'+
','타입','Action이름');</li></ol></li>
<li>
<p><strong>Action Forward의 검증</strong><br>Action Forward가 잘 등록되었는지는 아래와 같은 코드로 확인할 수가 있고 보통 모듈.class.php의 checkUpdate() method에서 이용됩니다.</p></li>
<ol class="code">
<li>$oModuleModel = &amp;getModel('module');<br>if($oModuleModel-&gt;getActionForward('Action이름')) ...</li></ol>
<li>
<p><strong>Action Forward의 삭제<br></strong>Action Forward가 필요 없을 경우 삭제하기 위한 용도로 이용됩니다.</p></li>
<ol class="code">
<li><strong>$oModuleModel = &amp;getModel('module');<br>$oModuleModel = &amp;getController('module');<br>if($oModuleModel-&gt;getActionForward('Action이름'))<br>&nbsp;&nbsp;&nbsp; $oModuleController-&gt;deleteActionForward('모듈명','타입','Action이름');</strong></li></ol></ul><p>그 외 Action의 이름이 (disp|proc|get)모듈 이름과 같이 이루어진 경우가 아닐 경우 Action Forward를 등록해야 합니다.</p><p>&nbsp;</p>
SMaker 2011.01.17 12:43:07
복원
<div class="eArea _hx" type="hx"><h3 id="h1278147387141">Action 소개</h3></div><p>XpressEngine의 모든 입력과 출력은 index.php를 통해서 이루어집니다.</p><p>입력된 요청을 분석후 대상 Module을 찾은 후 그 Module의 어떤 동작을 해야 하는지 결정하는 것이 Action입니다.<br>보통 이 동작을 결정하는 Action은 Request Argument의 <strong>$act</strong> 변수값을 이용합니다..</p><p>이 Action에 대한 선언은 모듈의 ./conf/module.xml에 정의되어 있습니다.</p><p><b>Action 명세</b></p><div editor_component="code_highlighter" code_type="xml" class="code" style="display: block; ">&lt;?xml&nbsp;version="1.0"&nbsp;encoding="utf-8"?&gt;<br>
&lt;module<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;grants&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;permissions&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;actions&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="dispFileAdminList"&nbsp;type="view"&nbsp;admin_index="true"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="dispFileAdminConfig"&nbsp;type="view"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileUpload"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileDownload"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileAdminDeleteChecked"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileAdminInsertConfig"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/actions&gt;<br>
&lt;/modules&gt;</div><ul><li>&lt;action ... /&gt; - Action의 선언<ul><li>name<ul><li>Action의 이름이며 이 이름은 해당 모듈의 method 이름이기도 합니다.</li><li>Action 이름에 Admin이라는 문자열이 포함되어 있으면 관리 권한이 있어야 동작하게 됩니다.</li></ul></li><li>type<ul><li>모듈을 구성하는 view, model, controller 중 어디에 선언되었는지를 정의합니다.</li><li>이 type을 이용하여 모듈.[!type].php 파일에서 지정된 method를 호출합니다.</li><li>Action 이름에 Admin 문자열이 포함되어 있으면 모듈.admin.[!type].php 파일에서 지정된 method를 호출합니다.</li></ul></li><li>standalone<ul><li>별도의 mid를 요청 받지 않고 모듈 자체로도 실행 가능한지 선언할 수 있습니다.</li><li>모든 모듈이 mid를 생성하지 않고 모듈 자체적으로 동작할 수도 있는데 이럴 경우 mid 없이 사용해도 된다는 것을 알립니다.</li><li>standalone이 true로 되어 있고 mid를 요청 받지 못한 경우 모듈 실행 시 에러를 출력하게 됩니다.</li></ul></li><li>index<ul><li>특정 모듈이 요청될 때 $act 값이 없거나 선언된 $act에 속하는 것이 없을 때 기본 Action으로 지정한다는 것입니다.</li><li>하나의 Action만 적용됩니다.</li></ul></li><li>admin_index<ul><li>Admin 모듈에서 특정 모듈의 관리자 view를 표시할 때 기본 관리자 view를 찾을 때 사용됩니다.</li></ul></li><li>setup_index<ul><li>모듈의 설정 페이지로 사용됩니다. (실제로 사용되고 있는지 알 수 없습니다)</li></ul></li></ul></li><li>&lt;permission ... /&gt; - Permission의 선언<ul><li>action<ul><li>모듈 실행 권한을 지정할 Action의 이름입니다.</li></ul></li><li>target<ul><li>모듈 실행 권한을 지정할 수 있습니다.<ul><li>member : 회원</li><li>manager : 관리자</li></ul></li></ul></li></ul></li></ul><div class="eArea _hx" type="hx"><h3 id="h1278147387141">Action 이용</h3></div><p>Action은 $act 라는 변수를 통해서 호출할 수 있습니다.</p><p>호출은 GET/ POST/ JSON/ XMLRPC 어떤 경우에도 act라는 이름을 이용하게 됩니다.</p><p>예) editor 모듈의 dispEditorPopup() 호출 (./modules/editor/editor.view.php)</p><blockquote class="citation"><p>?module=editor&amp;act=dispEditorPopup&amp;editor_sequence=1&amp;component=image_editor</p></blockquote><div class="eArea _hx" type="hx"><h3 id="h1278147387141">Action Forward</h3></div><p>일반적으로 XE의 Action은 모듈에 귀속됩니다.</p><p>즉 별다른 지시가 없을 경우 $act 변수에 의해 Action이 호출되면 현재 동작중인 모듈의 Action으로 인정이 되어 실행됩니다.</p><p>하지만 경우에 따라서 현재 동작중인 모듈이 아닌 다른 모듈의 Action이 호출될 경우가 있습니다.</p><p>&nbsp;</p><p>대표적인 예가 RSS 모듈입니다.</p><p>rss라는 Action은 게시판 모듈에서 정의된 Action이 아니지만 Action Forward 기능을 통해 호출되어 실행이 됩니다.</p><blockquote class="citation"><p>?mid=board&amp;act=rss</p></blockquote><p>Action Forward는 모듈 독립적인 기능을 수행하기를 원할때 사용할 수 있습니다.</p><p>위와 같은 요청의 경우 board 라는 mid를 찾게 되고 이 mid가 게시판 모듈의 mid일 경우 rss라는 Action이 없습니다.</p><p>이럴 경우 XE는 Action Forward 등록된 것중에 rss라는 것이 있는지 찾게 됩니다.</p><p>rss라는 Action은 RSS모듈의 View type으로 DB에 등록이 되어 있어서 XE는 board라는 mid의 정보를 모두 설정하고 나서 RSS 모듈의 View 객체를 생성해서 rss method를 실행하게 됩니다.</p><p>&nbsp;</p><p>이 Action Forward는 현재 요청된 모듈의 레이아웃이나 정보를 유지한채 다른 동작을 원할 경우 필요합니다.</p><p>다른 예로 친구 목록을 보는 Action은 Communication 모듈의 dispCommunicationFriend 라는 Action으로 동작을 합니다.</p><p>이 Action은 현재 보고 있는 모듈의 레이아웃등을 그대로 유지한채 내용을 친구 목록으로 대체합니다.</p><p>&nbsp;</p><p>즉 컨텐츠 영역을 약속된 Action에 따라서 바꾸어서 출력할 수도 있고 요청된 모듈의 정보를 바탕으로 다른 결과를 유도할 수도 있는 기능입니다.</p><p>&nbsp;</p><ul>
<li>
<p><strong>Action Forward의 등록</strong><br>보통 Action Forward는 모듈.class.php 에서 moduleInstall() 시에 저장이 됩니다.<br>아래와 같이 등록할 수가 있습니다.</p>
<ol class="code">
<li>$oModuleController = &amp;getController('module');<br>$oMdouleController-&gt;insertActionForward('모듈명','타입','Action이름');</li></ol></li>
<li>
<p><strong>Action Forward의 검증</strong><br>Action Forward가 잘 등록되었는지는 아래와 같은 코드로 확인할 수가 있고 보통 모듈.class.php의 checkUpdate() method에서 이용됩니다.</p></li>
<ol class="code">
<li>$oModuleModel = &amp;getModel('module');<br>if($oModuleModel-&gt;getActionForward('Action이름')) ...</li></ol>
<li>
<p><strong>Action Forward의 삭제<br></strong>Action Forward가 필요 없을 경우 삭제하기 위한 용도로 이용됩니다.</p></li>
<ol class="code">
<li><strong>$oModuleModel = &amp;getModel('module');<br>$oModuleModel = &amp;getController('module');<br>if($oModuleModel-&gt;getActionForward('Action이름'))<br>&nbsp;&nbsp;&nbsp; $oModuleController-&gt;deleteActionForward('모듈명','타입','Action이름');</strong></li></ol></ul><p>그 외 Action의 이름이 (disp|proc|get)모듈 이름과 같이 이루어진 경우가 아닐 경우 Action Forward를 등록해야 합니다.</p><p>&nbsp;</p>
SMaker 2011.01.16 21:08:06
복원
<div class="eArea _hx" type="hx"><h3 id="h1278147387141">Action 소개</h3></div><p>XpressEngine의 모든 입력과 출력은 index.php를 통해서 이루어집니다.</p><p>입력된 요청을 분석후 대상 Module을 찾은 후 그 Module의 어떤 동작을 해야 하는지 결정하는 것이 Action입니다.<br>보통 이 동작을 결정하는 Action은 Request Argument의 <strong>$act</strong> 변수값을 이용합니다..</p><p>&nbsp;</p><p>이 Action에 대한 선언은 모듈의 ./conf/module.xml에 정의되어 있습니다.</p><p>&nbsp;</p><p><b>Action 명세</b></p><div editor_component="code_highlighter" code_type="xml" class="code" style="display: block; ">&lt;?xml&nbsp;version="1.0"&nbsp;encoding="utf-8"?&gt;<br>
&lt;module<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;grants&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;permissions&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;actions&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="dispFileAdminList"&nbsp;type="view"&nbsp;admin_index="true"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="dispFileAdminConfig"&nbsp;type="view"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileUpload"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileDownload"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileAdminDeleteChecked"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileAdminInsertConfig"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/actions&gt;<br>
&lt;/modules&gt;</div><ul><li>&lt;action ... /&gt; - Action의 선언<ul><li>name<ul><li>Action의 이름이며 이 이름은 해당 모듈의 method 이름이기도 합니다.</li><li>Action 이름에 Admin이라는 문자열이 포함되어 있으면 관리 권한이 있어야 동작하게 됩니다.</li></ul></li><li>type<ul><li>모듈을 구성하는 view, model, controller 중 어디에 선언되었는지를 정의합니다.</li><li>이 type을 이용하여 모듈.[!type].php 파일에서 지정된 method를 호출합니다.</li><li>Action 이름에 Admin 문자열이 포함되어 있으면 모듈.admin.[!type].php 파일에서 지정된 method를 호출합니다.</li></ul></li><li>standalone<ul><li>별도의 mid를 요청 받지 않고 모듈 자체로도 실행 가능한지 선언할 수 있습니다.</li><li>모든 모듈이 mid를 생성하지 않고 모듈 자체적으로 동작할 수도 있는데 이럴 경우 mid 없이 사용해도 된다는 것을 알립니다.</li><li>standalone이 true로 되어 있고 mid를 요청 받지 못한 경우 모듈 실행 시 에러를 출력하게 됩니다.</li></ul></li><li>index<ul><li>특정 모듈이 요청될 때 $act 값이 없거나 선언된 $act에 속하는 것이 없을 때 기본 Action으로 지정한다는 것입니다.</li><li>하나의 Action만 적용됩니다.</li></ul></li><li>admin_index<ul><li>Admin 모듈에서 특정 모듈의 관리자 view를 표시할 때 기본 관리자 view를 찾을 때 사용됩니다.</li></ul></li><li>setup_index<ul><li>모듈의 설정 페이지로 사용됩니다. (실제로 사용되고 있는지 알 수 없습니다)</li></ul></li></ul></li><li>&lt;permission ... /&gt; - Permission의 선언<ul><li>action<ul><li>모듈 실행 권한을 지정할 Action의 이름입니다.</li></ul></li><li>target<ul><li>모듈 실행 권한을 지정할 수 있습니다.<ul><li>member : 회원</li><li>manager : 관리자</li></ul></li></ul></li></ul></li></ul><p>&nbsp;</p><div class="eArea _hx" type="hx"><h3 id="h1278147387141">Action 이용</h3></div><p>Action은 $act 라는 변수를 통해서 호출할 수 있습니다.</p><p>호출은 GET/ POST/ JSON/ XMLRPC 어떤 경우에도 act라는 이름을 이용하게 됩니다.</p><p>&nbsp;</p><p>예) editor 모듈의 dispEditorPopup() 호출 (./modules/editor/editor.view.php)</p><ol class="code">
<li>?module=editor&amp;<strong>act=dispEditorPopup</strong>&amp;editor_sequence=1&amp;component=image_editor</li></ol><p>&nbsp;</p><p>&nbsp;</p><div class="eArea _hx" type="hx"><h3 id="h1278147387141">Action Forward</h3></div><p>일반적으로 XE의 Action은 모듈에 귀속됩니다.</p><p>즉 별다른 지시가 없을 경우 $act 변수에 의해 Action이 호출되면 현재 동작중인 모듈의 Action으로 인정이 되어 실행됩니다.</p><p>하지만 경우에 따라서 현재 동작중인 모듈이 아닌 다른 모듈의 Action이 호출될 경우가 있습니다.</p><p>&nbsp;</p><p>대표적인 예가 RSS 입니다.</p><p>$act = rss 는 게시판모듈에서 정의된 Action이 아니지만 Action Forward 기능을 통해 호출되어 실행이 됩니다.</p><p>Action Forward는 모듈 독립적인 기능을 수행하기를 원할때 사용할 수 있습니다.</p><p>&nbsp;</p><ol class="code">
<li>?mid=board&amp;act=rss</li></ol><p>&nbsp;</p><p>위와 같은 요청의 경우 board 라는 mid를 찾게 되고 이 mid가 게시판 모듈의 mid일 경우 rss라는 Action이 없습니다.</p><p>이럴 경우 XE는 Action Forward 등록된 것중에 rss라는 것이 있는지 찾게 됩니다.</p><p>rss라는 Action은 RSS모듈의 View type으로 DB에 등록이 되어 있어서 XE는 board라는 mid의 정보를 모두 설정하고 나서 RSS 모듈의 View 객체를 생성해서 rss method를 실행하게 됩니다.</p><p>&nbsp;</p><p>이 Action Forward는 현재 요청된 모듈의 레이아웃이나 정보를 유지한채 다른 동작을 원할 경우 필요합니다.</p><p>다른 예로 친구 목록을 보는 Action은 Communication 모듈의 dispCommunicationFriend 라는 Action으로 동작을 합니다.</p><p>이 Action은 현재 보고 있는 모듈의 레이아웃등을 그대로 유지한채 내용을 친구 목록으로 대체합니다.</p><p>&nbsp;</p><p>즉 컨텐츠 영역을 약속된 Action에 따라서 바꾸어서 출력할 수도 있고 요청된 모듈의 정보를 바탕으로 다른 결과를 유도할 수도 있는 기능입니다.</p><p>&nbsp;</p><ul>
<li>
<p><strong>Action Forward의 등록</strong><br>보통 Action Forward는 모듈.class.php 에서 moduleInstall() 시에 저장이 됩니다.<br>아래와 같이 등록할 수가 있습니다.</p>
<ol class="code">
<li>$oModuleController = &amp;getController('module');<br>$oMdouleController-&gt;insertActionForward('모듈명','타입','Action이름');</li></ol></li>
<li>
<p><strong>Action Forward의 검증</strong><br>Action Forward가 잘 등록되었는지는 아래와 같은 코드로 확인할 수가 있고 보통 모듈.class.php의 checkUpdate() method에서 이용됩니다.</p></li>
<ol class="code">
<li>$oModuleModel = &amp;getModel('module');<br>if($oModuleModel-&gt;getActionForward('Action이름')) ...</li></ol>
<li>
<p><strong>Action Forward의 삭제<br></strong>Action Forward가 필요 없을 경우 삭제하기 위한 용도로 이용됩니다.</p></li>
<ol class="code">
<li><strong>$oModuleModel = &amp;getModel('module');<br>$oModuleModel = &amp;getController('module');<br>if($oModuleModel-&gt;getActionForward('Action이름'))<br>&nbsp;&nbsp;&nbsp; $oModuleController-&gt;deleteActionForward('모듈명','타입','Action이름');</strong></li></ol></ul><p>그 외 Action의 이름이 (disp|proc|get)모듈 이름과 같이 이루어진 경우가 아닐 경우 Action Forward를 등록해야 합니다.</p><p>&nbsp;</p>
SMaker 2010.07.03 18:18:26
복원
<div class="eArea _hx" type="hx"><h3 id="h1278147387141">Action 소개</h3></div><p>XpressEngine의 모든 입력과 출력은 index.php를 통해서 이루어집니다.</p><p>입력된 요청을 분석후 대상 Module을 찾은 후 그 Module의 어떤 동작을 해야 하는지 결정하는 것이 Action입니다.<br>보통 이 동작을 결정하는 Action은 Request Argument의 <strong>$act</strong> 변수값을 이용합니다..</p><p>&nbsp;</p><p>이 Action에 대한 선언은 모듈의 ./conf/module.xml에 정의되어 있습니다.</p><p>&nbsp;</p><p><b>Action 명세</b></p><div editor_component="code_highlighter" code_type="xml" class="code" style="display: block; ">&lt;?xml&nbsp;version="1.0"&nbsp;encoding="utf-8"?&gt;<br>
&lt;module<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;grants&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;permissions&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;actions&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="dispFileAdminList"&nbsp;type="view"&nbsp;admin_index="true"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="dispFileAdminConfig"&nbsp;type="view"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileUpload"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileDownload"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileAdminDeleteChecked"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name="procFileAdminInsertConfig"&nbsp;type="controller"&nbsp;standalone="true"&nbsp;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/actions&gt;<br>
&lt;/modules&gt;</div><ul><li>&lt;action ... /&gt; - Action의 선언<ul><li>name<ul><li>Action의 이름이며 이 이름은 해당 모듈의 method 이름이기도 합니다.</li><li>Action 이름에 Admin이라는 문자열이 포함되어 있으면 관리 권한이 있어야 동작하게 됩니다.</li></ul></li><li>type<ul><li>모듈을 구성하는 view, model, controller 중 어디에 선언되었는지를 정의합니다.</li><li>이 type을 이용하여 모듈.[type].php 파일에서 지정된 method를 호출합니다.</li><li>Action 이름에 Admin 문자열이 포함되어 있으면 모듈.admin.[type].php 파일에서 지정된 method를 호출합니다.</li></ul></li><li>standalone<ul><li>별도의 mid를 요청 받지 않고 모듈 자체로도 실행 가능한지 선언할 수 있습니다.</li><li>모든 모듈이 mid를 생성하지 않고 모듈 자체적으로 동작할 수도 있는데 이럴 경우 mid 없이 사용해도 된다는 것을 알립니다.</li><li>standalone이 true로 되어 있고 mid를 요청 받지 못한 경우 모듈 실행 시 에러를 출력하게 됩니다.</li></ul></li><li>index<ul><li>특정 모듈이 요청될 때 $act 값이 없거나 선언된 $act에 속하는 것이 없을 때 기본 Action으로 지정한다는 것입니다.</li><li>하나의 Action만 적용됩니다.</li></ul></li><li>admin_index<ul><li>Admin 모듈에서 특정 모듈의 관리자 view를 표시할 때 기본 관리자 view를 찾을 때 사용됩니다.</li></ul></li><li>setup_index<ul><li>모듈의 설정 페이지로 사용됩니다. (실제로 사용되고 있는지 알 수 없습니다)</li></ul></li></ul></li><li>&lt;permission ... /&gt; - Permission의 선언<ul><li>action<ul><li>모듈 실행 권한을 지정할 Action의 이름입니다.</li></ul></li><li>target<ul><li>모듈 실행 권한을 지정할 수 있습니다.<ul><li>member : 회원</li><li>manager : 관리자</li></ul></li></ul></li></ul></li></ul><p>&nbsp;</p><div class="eArea _hx" type="hx"><h3 id="h1278147387141">Action 이용</h3></div><p>Action은 $act 라는 변수를 통해서 호출할 수 있습니다.</p><p>호출은 GET/ POST/ JSON/ XMLRPC 어떤 경우에도 act라는 이름을 이용하게 됩니다.</p><p>&nbsp;</p><p>예) editor 모듈의 dispEditorPopup() 호출 (./modules/editor/editor.view.php)</p><ol class="code">
<li>?module=editor&amp;<strong>act=dispEditorPopup</strong>&amp;editor_sequence=1&amp;component=image_editor</li></ol><p>&nbsp;</p><p>&nbsp;</p><div class="eArea _hx" type="hx"><h3 id="h1278147387141">Action Forward</h3></div><p>일반적으로 XE의 Action은 모듈에 귀속됩니다.</p><p>즉 별다른 지시가 없을 경우 $act 변수에 의해 Action이 호출되면 현재 동작중인 모듈의 Action으로 인정이 되어 실행됩니다.</p><p>하지만 경우에 따라서 현재 동작중인 모듈이 아닌 다른 모듈의 Action이 호출될 경우가 있습니다.</p><p>&nbsp;</p><p>대표적인 예가 RSS 입니다.</p><p>$act = rss 는 게시판모듈에서 정의된 Action이 아니지만 Action Forward 기능을 통해 호출되어 실행이 됩니다.</p><p>Action Forward는 모듈 독립적인 기능을 수행하기를 원할때 사용할 수 있습니다.</p><p>&nbsp;</p><ol class="code">
<li>?mid=board&amp;act=rss</li></ol><p>&nbsp;</p><p>위와 같은 요청의 경우 board 라는 mid를 찾게 되고 이 mid가 게시판 모듈의 mid일 경우 rss라는 Action이 없습니다.</p><p>이럴 경우 XE는 Action Forward 등록된 것중에 rss라는 것이 있는지 찾게 됩니다.</p><p>rss라는 Action은 RSS모듈의 View type으로 DB에 등록이 되어 있어서 XE는 board라는 mid의 정보를 모두 설정하고 나서 RSS 모듈의 View 객체를 생성해서 rss method를 실행하게 됩니다.</p><p>&nbsp;</p><p>이 Action Forward는 현재 요청된 모듈의 레이아웃이나 정보를 유지한채 다른 동작을 원할 경우 필요합니다.</p><p>다른 예로 친구 목록을 보는 Action은 Communication 모듈의 dispCommunicationFriend 라는 Action으로 동작을 합니다.</p><p>이 Action은 현재 보고 있는 모듈의 레이아웃등을 그대로 유지한채 내용을 친구 목록으로 대체합니다.</p><p>&nbsp;</p><p>즉 컨텐츠 영역을 약속된 Action에 따라서 바꾸어서 출력할 수도 있고 요청된 모듈의 정보를 바탕으로 다른 결과를 유도할 수도 있는 기능입니다.</p><p>&nbsp;</p><ul>
<li>
<p><strong>Action Forward의 등록</strong><br>보통 Action Forward는 모듈.class.php 에서 moduleInstall() 시에 저장이 됩니다.<br>아래와 같이 등록할 수가 있습니다.</p>
<ol class="code">
<li>$oModuleController = &amp;getController('module');<br>$oMdouleController-&gt;insertActionForward('모듈명','타입','Action이름');</li></ol></li>
<li>
<p><strong>Action Forward의 검증</strong><br>Action Forward가 잘 등록되었는지는 아래와 같은 코드로 확인할 수가 있고 보통 모듈.class.php의 checkUpdate() method에서 이용됩니다.</p></li>
<ol class="code">
<li>$oModuleModel = &amp;getModel('module');<br>if($oModuleModel-&gt;getActionForward('Action이름')) ...</li></ol>
<li>
<p><strong>Action Forward의 삭제<br></strong>Action Forward가 필요 없을 경우 삭제하기 위한 용도로 이용됩니다.</p></li>
<ol class="code">
<li><strong>$oModuleModel = &amp;getModel('module');<br>$oModuleModel = &amp;getController('module');<br>if($oModuleModel-&gt;getActionForward('Action이름'))<br>&nbsp;&nbsp;&nbsp; $oModuleController-&gt;deleteActionForward('모듈명','타입','Action이름');</strong></li></ol></ul><p>그 외 Action의 이름이 (disp|proc|get)모듈 이름과 같이 이루어진 경우가 아닐 경우 Action Forward를 등록해야 합니다.</p><p>&nbsp;</p>
SMaker 2010.07.03 18:18:06
복원
<div class="eArea xe_content xe_dr_hx"><H3>Action 소개</H3></div><div class="eArea xe_content xe_dr_txt"><P>XpressEngine의 모든 입력과 출력은 index.php를 통해서 이루어집니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>입력된 요청을 분석후 대상 Module을 찾은 후 그 Module의 어떤 동작을 해야 하는지 결정하는 것이 Action입니다.<BR>보통 이 동작을 결정하는 Action은 Request Argument의 <STRONG>$act</STRONG> 변수값을 이용합니다..</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>이 Action에 대한 선언은 모듈의 ./conf/module.xml에 정의되어 있습니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>
<UL class=checkListType>
<LI><STRONG>Action 명세</STRONG></LI></UL>
<OL style="MARGIN-LEFT: 2em" class=code>
<LI>&lt;?xml version="1.0" encoding="utf-8"?&gt;<BR>&lt;module&gt;<BR>&nbsp;&lt;grants /&gt;</LI>
<LI>&nbsp;&lt;permissions /&gt;<BR>&nbsp;&lt;actions&gt;<BR>&nbsp; &lt;action name="dispFileAdminList" type="view" admin_index="true" standalone="true" /&gt;<BR>&nbsp; &lt;action name="dispFileAdminConfig" type="view" standalone="true" /&gt;<BR>&nbsp; &lt;action name="procFileUpload" type="controller" standalone="true" /&gt;<BR>&nbsp; &lt;action name="procFileDelete" type="controller" standalone="true" /&gt;<BR>&nbsp; &lt;action name="procFileDownload" type="controller" standalone="true" /&gt;<BR>&nbsp; &lt;action name="procFileAdminDeleteChecked" type="controller" standalone="true" /&gt;<BR>&nbsp; &lt;action name="procFileAdminInsertConfig" type="controller" standalone="true" /&gt;<BR>&nbsp;&lt;/actions&gt;<BR>&lt;/module&gt;</LI></OL>
<UL style="MARGIN-LEFT: 2em">
<LI><STRONG>&lt;action ... /&gt;</STRONG><BR>Action의 선언</LI>
<LI><STRONG>name</STRONG><BR>Action의 이름이며 이 이름은 해당 모듈의 method 이름이기도 합니다.<BR>* 주의 : Action 이름에 Admin이라는 문자열이 있으면 관리 권한이 있어야 동작을 합니다.</LI>
<LI><STRONG>type</STRONG><BR>모듈을 구성하는 view, model, controller 중 어디에 선언되었는지를 정의합니다.<BR>이 type을 이용하여 모듈.view.class.php 등의 파일을 찾을 수 있습니다.<BR>Action이름에 Admin 문자열이 있으면 모듈.type.admin.php 파일을 찾게 됩니다.</LI>
<LI><STRONG>standalone</STRONG><BR>별도의 mid없이 모듈 자체로도 실행 가능한지 선언할 수 있습니다.<BR>모든 모듈이 mid를 생성하지 않고 모듈 자체적으로 동작할 수도 있는데 이럴 경우 mid없이 사용해도 된다는 것을 알립니다.</LI>
<LI><STRONG>index</STRONG><BR>특정 모듈이 요청될때 $act값이 없거나 선언된 $act에 속하는것이 없을 때 기본 Action으로 지정한다는 것입니다.<BR>하나의 Action만 적용됩니다.</LI>
<LI><STRONG>admin_index</STRONG><BR>Admin모듈에서 특정 모듈의 관리자 view를 표시할때 기본 관리자 view를 찾을 때 사용됩니다.</LI>
<LI><STRONG>setup_index<BR></STRONG>설정 페이지로 지정할 때 사용됩니다.</LI></UL>
<P></P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_hx"><H3>Action 이용</H3></div><div class="eArea xe_content xe_dr_txt"><P>Action은 $act 라는 변수를 통해서 호출할 수 있습니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>호출은 GET/ POST/ JSON/ XMLRPC 어떤 경우에도 act라는 이름을 이용하게 됩니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>예) editor 모듈의 dispEditorPopup() 호출 (./modules/editor/editor.view.php)</P></div><div class="eArea xe_content xe_dr_txt"><OL class=code>
<LI>?module=editor&amp;<STRONG>act=dispEditorPopup</STRONG>&amp;editor_sequence=1&amp;component=image_editor</LI></OL></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_hx"><H3>Action Forward</H3></div><div class="eArea xe_content xe_dr_txt"><P>일반적으로 XE의 Action은 모듈에 귀속됩니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>즉 별다른 지시가 없을 경우 $act 변수에 의해 Action이 호출되면 현재 동작중인 모듈의 Action으로 인정이 되어 실행됩니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>하지만 경우에 따라서 현재 동작중인 모듈이 아닌 다른 모듈의 Action이 호출될 경우가 있습니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>대표적인 예가 RSS 입니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>$act = rss 는 게시판모듈에서 정의된 Action이 아니지만 Action Forward 기능을 통해 호출되어 실행이 됩니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>Action Forward는 모듈 독립적인 기능을 수행하기를 원할때 사용할 수 있습니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><OL class=code>
<LI>?mid=board&amp;act=rss</LI></OL></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>위와 같은 요청의 경우 board 라는 mid를 찾게 되고 이 mid가 게시판 모듈의 mid일 경우 rss라는 Action이 없습니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>이럴 경우 XE는 Action Forward 등록된 것중에 rss라는 것이 있는지 찾게 됩니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>rss라는 Action은 RSS모듈의 View type으로 DB에 등록이 되어 있어서 XE는 board라는 mid의 정보를 모두 설정하고 나서 RSS 모듈의 View 객체를 생성해서 rss method를 실행하게 됩니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>이 Action Forward는 현재 요청된 모듈의 레이아웃이나 정보를 유지한채 다른 동작을 원할 경우 필요합니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>다른 예로 친구 목록을 보는 Action은 Communication 모듈의 dispCommunicationFriend 라는 Action으로 동작을 합니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>이 Action은 현재 보고 있는 모듈의 레이아웃등을 그대로 유지한채 내용을 친구 목록으로 대체합니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>즉 컨텐츠 영역을 약속된 Action에 따라서 바꾸어서 출력할 수도 있고 요청된 모듈의 정보를 바탕으로 다른 결과를 유도할 수도 있는 기능입니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><UL>
<LI>
<P><STRONG>Action Forward의 등록</STRONG><BR>보통 Action Forward는 모듈.class.php 에서 moduleInstall() 시에 저장이 됩니다.<BR>아래와 같이 등록할 수가 있습니다.</P>
<OL class=code>
<LI>$oModuleController = &amp;getController('module');<BR>$oMdouleController-&gt;insertActionForward('모듈명','타입','Action이름');</LI></OL></LI>
<LI>
<P><STRONG>Action Forward의 검증</STRONG><BR>Action Forward가 잘 등록되었는지는 아래와 같은 코드로 확인할 수가 있고 보통 모듈.class.php의 checkUpdate() method에서 이용됩니다.</P></LI>
<OL class=code>
<LI>$oModuleModel = &amp;getModel('module');<BR>if($oModuleModel-&gt;getActionForward('Action이름')) ...</LI></OL>
<LI>
<P><STRONG>Action Forward의 삭제<BR></STRONG>Action Forward가 필요 없을 경우 삭제하기 위한 용도로 이용됩니다.</P></LI>
<OL class=code>
<LI><STRONG>$oModuleModel = &amp;getModel('module');<BR>$oModuleModel = &amp;getController('module');<BR>if($oModuleModel-&gt;getActionForward('Action이름'))<BR>&nbsp;&nbsp;&nbsp; $oModuleController-&gt;deleteActionForward('모듈명','타입','Action이름');</STRONG></LI></OL></UL></div><div class="eArea xe_content xe_dr_txt"><P>그외 Action의 이름이 (disp|proc|get)모듈 이름과 같이 이루어진 경우가 아닐 경우 Action Forward를 등록해야 합니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div>
SMaker 2010.07.03 17:30:49
복원
<div class="eArea xe_content xe_dr_hx"><H3>Action 소개</H3></div><div class="eArea xe_content xe_dr_txt"><P>XpressEngine의 모든 입력과 출력은 index.php를 통해서 이루어집니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>입력된 요청을 분석후 대상 Module을 찾은 후 그 Module의 어떤 동작을 해야 하는지 결정하는 것이 Action입니다.<BR>보통 이 동작을 결정하는 Action은 Request Argument의 <STRONG>$act</STRONG> 변수값을 이용합니다..</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>이 Action에 대한 선언은 모듈의 ./conf/module.xml에 정의되어 있습니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>
<UL class=checkListType>
<LI><STRONG>Action 명세</STRONG></LI></UL>
<OL style="MARGIN-LEFT: 2em" class=code>
<LI>&lt;?xml version="1.0" encoding="utf-8"?&gt;<BR>&lt;module&gt;<BR>&nbsp;&lt;grants /&gt;</LI>
<LI>&nbsp;&lt;permissions /&gt;<BR>&nbsp;&lt;actions&gt;<BR>&nbsp; &lt;action name="dispFileAdminList" type="view" admin_index="true" standalone="true" /&gt;<BR>&nbsp; &lt;action name="dispFileAdminConfig" type="view" standalone="true" /&gt;<BR>&nbsp; &lt;action name="procFileUpload" type="controller" standalone="true" /&gt;<BR>&nbsp; &lt;action name="procFileDelete" type="controller" standalone="true" /&gt;<BR>&nbsp; &lt;action name="procFileDownload" type="controller" standalone="true" /&gt;<BR>&nbsp; &lt;action name="procFileAdminDeleteChecked" type="controller" standalone="true" /&gt;<BR>&nbsp; &lt;action name="procFileAdminInsertConfig" type="controller" standalone="true" /&gt;<BR>&nbsp;&lt;/actions&gt;<BR>&lt;/module&gt;</LI></OL>
<UL style="MARGIN-LEFT: 2em">
<LI><STRONG>&lt;action ... /&gt;</STRONG><BR>Action의 선언</LI>
<LI><STRONG>name</STRONG><BR>Action의 이름이며 이 이름은 해당 모듈의 method 이름이기도 합니다.<BR>* 주의 : Action 이름에 Admin이라는 문자열이 있으면 관리 권한이 있어야 동작을 합니다.</LI>
<LI><STRONG>type</STRONG><BR>모듈을 구성하는 view, model, controller 중 어디에 선언되었는지를 정의합니다.<BR>이 type을 이용하여 모듈.view.class.php 등의 파일을 찾을 수 있습니다.<BR>Action이름에 Admin 문자열이 있으면 모듈.type.admin.php 파일을 찾게 됩니다.</LI>
<LI><STRONG>standalone</STRONG><BR>별도의 mid없이 모듈 자체로도 실행 가능한지 선언할 수 있습니다.<BR>모든 모듈이 mid를 생성하지 않고 모듈 자체적으로 동작할 수도 있는데 이럴 경우 mid없이 사용해도 된다는 것을 알립니다.</LI>
<LI><STRONG>index</STRONG><BR>특정 모듈이 요청될때 $act값이 없거나 선언된 $act에 속하는것이 없을 때 기본 Action으로 지정한다는 것입니다.<BR>하나의 Action만 적용됩니다.</LI>
<LI><STRONG>admin_index</STRONG><BR>Admin모듈에서 특정 모듈의 관리자 view를 표시할때 기본 관리자 view를 찾을 때 사용됩니다.</LI>
<LI><STRONG>setup_index<BR></STRONG>설정 페이지로 지정할 때 사용됩니다.</LI></UL>
<P></P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_hx"><H3>Action 이용</H3></div><div class="eArea xe_content xe_dr_txt"><P>Action은 $act 라는 변수를 통해서 호출할 수 있습니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>호출은 GET/ POST/ JSON/ XMLRPC 어떤 경우에도 act라는 이름을 이용하게 됩니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>예) editor 모듈의 dispEditorPopup() 호출 (./modules/editor/editor.view.php)</P></div><div class="eArea xe_content xe_dr_txt"><OL class=code>
<LI>?module=editor&amp;<STRONG>act=dispEditorPopup</STRONG>&amp;editor_sequence=1&amp;component=image_editor</LI></OL></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_hx"><H3>Action Forward</H3></div><div class="eArea xe_content xe_dr_txt"><P>일반적으로 XE의 Action은 모듈에 귀속됩니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>즉 별다른 지시가 없을 경우 $act 변수에 의해 Action이 호출되면 현재 동작중인 모듈의 Action으로 인정이 되어 실행됩니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>하지만 경우에 따라서 현재 동작중인 모듈이 아닌 다른 모듈의 Action이 호출될 경우가 있습니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>대표적인 예가 RSS 입니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>$act = rss 는 게시판모듈에서 정의된 Action이 아니지만 Action Forward 기능을 통해 호출되어 실행이 됩니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>Action Forward는 모듈 독립적인 기능을 수행하기를 원할때 사용할 수 있습니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><OL class=code>
<LI>?mid=board&amp;act=rss</LI></OL></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>위와 같은 요청의 경우 board 라는 mid를 찾게 되고 이 mid가 게시판 모듈의 mid일 경우 rss라는 Action이 없습니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>이럴 경우 XE는 Action Forward 등록된 것중에 rss라는 것이 있는지 찾게 됩니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>rss라는 Action은 RSS모듈의 View type으로 DB에 등록이 되어 있어서 XE는 board라는 mid의 정보를 모두 설정하고 나서 RSS 모듈의 View 객체를 생성해서 rss method를 실행하게 됩니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>이 Action Forward는 현재 요청된 모듈의 레이아웃이나 정보를 유지한채 다른 동작을 원할 경우 필요합니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>다른 예로 친구 목록을 보는 Action은 Communication 모듈의 dispCommunicationFriend 라는 Action으로 동작을 합니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>이 Action은 현재 보고 있는 모듈의 레이아웃등을 그대로 유지한채 내용을 친구 목록으로 대체합니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><P>즉 컨텐츠 영역을 약속된 Action에 따라서 바꾸어서 출력할 수도 있고 요청된 모듈의 정보를 바탕으로 다른 결과를 유도할 수도 있는 기능입니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div><div class="eArea xe_content xe_dr_txt"><UL>
<LI>
<P><STRONG>Action Forward의 등록</STRONG><BR>보통 Action Forward는 모듈.class.php 에서 moduleInstall() 시에 저장이 됩니다.<BR>아래와 같이 등록할 수가 있습니다.</P>
<OL class=code>
<LI>$oModuleController = &amp;getController('module');<BR>$oMdouleController-&gt;insertActionForward('모듈명','타입','Action이름');</LI></OL></LI>
<LI>
<P><STRONG>Action Forward의 검증</STRONG><BR>Action Forward가 잘 등록되었는지는 아래와 같은 코드로 확인할 수가 있고 보통 모듈.class.php의 checkUpdate() method에서 이용됩니다.</P>
<OL class=code>
<LI>$oModuleModel = &amp;getModel('module');<BR>if($oModuleModel-&gt;getActionForward('Action이름')) ...</LI></OL></LI></UL></div><div class="eArea xe_content xe_dr_txt"><P>그외 Action의 이름이 (disp|proc|get)모듈 이름과 같이 이루어진 경우가 아닐 경우 Action Forward를 등록해야 합니다.</P></div><div class="eArea xe_content xe_dr_txt"><P>&nbsp;</P></div>
SMaker 2009.10.25 11:13:19
복원
<h3>Action 소개</h3>
<p>XpressEngine의 모든 입력과 출력은 index.php를 통해서 이루어집니다.</p>
<p>입력된 요청을 분석후 대상 Module을 찾은 후 그 Module의 어떤 동작을 해야 하는지 결정하는 것이 Action입니다.<br />
보통 이 동작을 결정하는 Action은 Request Argument의 <strong>$act</strong> 변수값을 이용합니다..</p>
<p>&nbsp;</p>
<p>이 Action에 대한 선언은 모듈의 ./conf/module.xml에 정의되어 있습니다.</p>
<p>&nbsp;</p>
<ul class="checkListType">
<li><strong>Action 명세</strong></li>
</ul>
<ol class="code" style="margin-left: 2em;">
<li>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />
&lt;module&gt;<br />
&nbsp;&lt;grants /&gt;</li>
<li>&nbsp;&lt;permissions /&gt;<br />
&nbsp;&lt;actions&gt;<br />
&nbsp; &lt;action name="dispFileAdminList" type="view" admin_index="true" standalone="true" /&gt;<br />
&nbsp; &lt;action name="dispFileAdminConfig" type="view" standalone="true" /&gt;<br />
&nbsp; &lt;action name="procFileUpload" type="controller" standalone="true" /&gt;<br />
&nbsp; &lt;action name="procFileDelete" type="controller" standalone="true" /&gt;<br />
&nbsp; &lt;action name="procFileDownload" type="controller" standalone="true" /&gt;<br />
&nbsp; &lt;action name="procFileAdminDeleteChecked" type="controller" standalone="true" /&gt;<br />
&nbsp; &lt;action name="procFileAdminInsertConfig" type="controller" standalone="true" /&gt;<br />
&nbsp;&lt;/actions&gt;<br />
&lt;/module&gt;</li>
</ol>
<ul style="margin-left: 2em;">
<li><strong>&lt;action ... /&gt;</strong><br />
Action의 선언</li>
<li><strong>name</strong><br />
Action의 이름이며 이 이름은 해당 모듈의 method 이름이기도 합니다.<br />
* 주의 : Action 이름에 Admin이라는 문자열이 있으면 관리 권한이 있어야 동작을 합니다.</li>
<li><strong>type</strong><br />
모듈을 구성하는 view, model, controller 중 어디에 선언되었는지를 정의합니다.<br />
이 type을 이용하여 모듈.view.class.php 등의 파일을 찾을 수 있습니다.<br />
Action이름에 Admin 문자열이 있으면 모듈.type.admin.php 파일을 찾게 됩니다.</li>
<li><strong>standalone</strong><br />
별도의 mid없이 모듈 자체로도 실행 가능한지 선언할 수 있습니다.<br />
모든 모듈이 mid를 생성하지 않고 모듈 자체적으로 동작할 수도 있는데 이럴 경우 mid없이 사용해도 된다는 것을 알립니다.</li>
<li><strong>index</strong><br />
특정 모듈이 요청될때 $act값이 없거나 선언된 $act에 속하는것이 없을 때 기본 Action으로 지정한다는 것입니다.<br />
하나의 Action만 적용됩니다.</li>
<li><strong>admin_index</strong><br />
Admin모듈에서 특정 모듈의 관리자 view를 표시할때 기본 관리자 view를 찾을 때 사용됩니다.</li>
</ul>
<p>&nbsp;</p>
<h3>Action 이용</h3>
<p>Action은 $act 라는 변수를 통해서 호출할 수 있습니다.</p>
<p>호출은 GET/ POST/ JSON/ XMLRPC 어떤 경우에도 act라는 이름을 이용하게 됩니다.</p>
<p>&nbsp;</p>
<p>예) editor 모듈의 dispEditorPopup() 호출 (./modules/editor/editor.view.php)</p>
<ol class="code">
<li>?module=editor&amp;<strong>act=dispEditorPopup</strong>&amp;editor_sequence=1&amp;component=image_editor</li>
</ol>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>Action Forward</h3>
<p>일반적으로 XE의 Action은 모듈에 귀속됩니다.</p>
<p>즉 별다른 지시가 없을 경우 $act 변수에 의해 Action이 호출되면 현재 동작중인 모듈의 Action으로 인정이 되어 실행됩니다.</p>
<p>하지만 경우에 따라서 현재 동작중인 모듈이 아닌 다른 모듈의 Action이 호출될 경우가 있습니다.</p>
<p>&nbsp;</p>
<p>대표적인 예가 RSS 입니다.</p>
<p>$act = rss 는 게시판모듈에서 정의된 Action이 아니지만 Action Forward 기능을 통해 호출되어 실행이 됩니다.</p>
<p>Action Forward는 모듈 독립적인 기능을 수행하기를 원할때 사용할 수 있습니다.</p>
<p>&nbsp;</p>
<ol class="code">
<li>?mid=board&amp;act=rss</li>
</ol>
<p>&nbsp;</p>
<p>위와 같은 요청의 경우 board 라는 mid를 찾게 되고 이 mid가 게시판 모듈의 mid일 경우 rss라는 Action이 없습니다.</p>
<p>이럴 경우 XE는 Action Forward 등록된 것중에 rss라는 것이 있는지 찾게 됩니다.</p>
<p>rss라는 Action은 RSS모듈의 View type으로 DB에 등록이 되어 있어서 XE는 board라는 mid의 정보를 모두 설정하고 나서 RSS 모듈의 View 객체를 생성해서 rss method를 실행하게 됩니다.</p>
<p>&nbsp;</p>
<p>이 Action Forward는 현재 요청된 모듈의 레이아웃이나 정보를 유지한채 다른 동작을 원할 경우 필요합니다.</p>
<p>다른 예로 친구 목록을 보는 Action은 Communication 모듈의 dispCommunicationFriend 라는 Action으로 동작을 합니다.</p>
<p>이 Action은 현재 보고 있는 모듈의 레이아웃등을 그대로 유지한채 내용을 친구 목록으로 대체합니다.</p>
<p>&nbsp;</p>
<p>즉 컨텐츠 영역을 약속된 Action에 따라서 바꾸어서 출력할 수도 있고 요청된 모듈의 정보를 바탕으로 다른 결과를 유도할 수도 있는 기능입니다.</p>
<p>&nbsp;</p>
<ul>
<li>
<p><strong>Action Forward의 등록</strong><br />
보통 Action Forward는 모듈.class.php 에서 moduleInstall() 시에 저장이 됩니다.<br />
아래와 같이 등록할 수가 있습니다.</p>
<ol class="code">
<li>$oModuleController = &amp;getController('module');<br />
$oMdouleController-&gt;insertActionForward('모듈명','타입','Action이름');</li>
</ol>
</li>
<li>
<p><strong>Action Forward의 검증</strong><br />
Action Forward가 잘 등록되었는지는 아래와 같은 코드로 확인할 수가 있고 보통 모듈.class.php의 checkUpdate() method에서 이용됩니다.</p>
<ol class="code">
<li>$oModuleModel = &amp;getModel('module');<br />
if($oModuleModel-&gt;getActionForward('Action이름')) ...</li>
</ol>
</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
2009.07.27 14:23:11