Submit Form 객체를 통해 전달 받은 사용자 입력 값을 처리하는 방법을 안내합니다.

다른 Controller의 Form 객체에서 사용자가 입력한 항목을 Submit Controller를 통해 전달 받고
처리하는 방법을 안내합니다.

Submit Controller 생성

다른 Controller의 Form 객체에서 입력 항목 값을 전달 받을 새로운 Submit Controller를 생성합니다.
아래 예시는 /sign/sign Controller의 Form 객체에서 sign/sign-submit Submit Controller로 전달하는 가정으로 작성된 코드입니다.
Controller /app/sign.php
<?php
class Signin extends \Controller\Make_Controller {

    public function init()
    {
        $this->layout()->head('type2');
        $this->layout()->view(PH_THEME_PATH.'/html/sign/signin.tpl.php');
        $this->layout()->foot();
    }

    public function make()
    {
        ...
    }

    public function form()
    {
        $form = new \Controller\Make_View_Form();
        $form->set('type', 'html');
        $form->set('action', '/sign/sigin-submit');
        $form->run();
    }

}

class Sigin_submit {

    public function init()
    {

    }

}
위와 같이 Form 객체가 생성된 Signin{} 아래에 Sigin_submit{} 를 추가하여 Submit Controller를 생성합니다.

Submit 수행 준비

Method Utility Method를 통해 Submit Controller에서 값을 전달 받습니다.
Method Utility를 사용하기 위해선 먼저 use 로 Method가 선언되어야 합니다.
Controller /app/sign.php
<?php
use Corelib\Method;

class Signin extends \Controller\Make_Controller {

    public function init()
    {
        ...
    }

    public function make()
    {
        ...
    }

    public function form()
    {
        $form = new \Controller\Make_View_Form();
        $form->set('type', 'html');
        $form->set('action', '/sign/sigin-submit');
        $form->run();
    }

}

class Sigin_submit {

    public function init()
    {

    }

}

Referer 검사 수행

Form 객체의 발신처가 내부 호스트인지 검사합니다.
아래 코드를 통해 외부 발신처에서 Form 객체가 전달 되었다면 즉시 코드 실행을 중단합니다.
Controller /app/sign.php
<?php
use Corelib\Method;

class Signin extends \Controller\Make_Controller {

    public function init()
    {
        ...
    }

    public function make()
    {
        ...
    }

    public function form()
    {
        $form = new \Controller\Make_View_Form();
        $form->set('type', 'html');
        $form->set('action', '/sign/sigin-submit');
        $form->run();
    }

}

class Sigin_submit {

    public function init()
    {
        Method::security('referer');
    }

}

Request 검사 수행

Form 객체에서 전달한 Request type를 검사합니다.
아래 코드를 통해 Request type이 GET 인지 POST인지 검사를 수행 후 조건에 일치하지 않는다면 코드 실행을 즉시 중단합니다.
Controller /app/sign.php
<?php
use Corelib\Method;

class Signin extends \Controller\Make_Controller {

    public function init()
    {
        ...
    }

    public function make()
    {
        ...
    }

    public function form()
    {
        $form = new \Controller\Make_View_Form();
        $form->set('type', 'html');
        $form->set('action', '/sign/sigin-submit');
        $form->run();
    }

}

class Sigin_submit {

    public function init()
    {
        Method::security('referer');
        Method::security('request_post'); //POST만 허용
    }

}
GET 만 허용 하려는 경우 아래와 같이 대체합니다.
만약, Request 구분 없이 모든 type의 Request를 허용 하려는 경우 security() 를 제거합니다.
Method::security('request_get'); //GET만 허용

Form 입력 항목 변수화

Form 객체에서 전달 받은 입력 항목 값을 Submit Controller에서 Validation 등의 처리가 가능하도록 변수화 합니다.
Controller /app/sign.php
<?php
use Corelib\Method;

class Signin extends \Controller\Make_Controller {

    public function init()
    {
        ...
    }

    public function make()
    {
        ...
    }

    public function form()
    {
        $form = new \Controller\Make_View_Form();
        $form->set('type', 'html');
        $form->set('action', '/sign/sigin-submit');
        $form->run();
    }

}

class Sigin_submit {

    public function init()
    {
        Method::security('referer');
        Method::security('request_post'); //POST만 허용
        $req = Method::request('post', 'memberid, memberpwd'); //POST로 넘겨 받은 값을 변수화 처리
    }

}
만약, GET으로 전달 받은 값을 변수화 하는 경우 아래와 같이 처리합니다.
$req = Method::request('get', 'memberid, memberpwd');
만약, FILE로 전달 받은 값을 변수화 하는 경우 아래와 같이 처리합니다.
$file = Method::request('file', 'profileimg');
좀더 자세한 변수화 및 Validation 처리 방법은 아래 '연관 가이드 바로가기'를 참고 바랍니다.