Form Form 객체를 생성하여 적용하는 방법을 안내합니다.

Submit Controller로 사용자 입력 항목을 전달할 수 있는 Form객체를 구성하고 출력할 수 있습니다.

Html, Multipart Form 객체

Html Form과 Multipart Form 은 일반적으로 사용하는 Form 객체로, 특정 Submit Controller 로 사용자 입력 값을 전달하기 위한 Form 입니다.
현재 페이지에 입력한 입력항목 값을 비동기(AJAX) 방식으로 Submit Controller로 전달하며,
Submit Controller는 전달 받은 입력 값을 Validation Method를 통해 검증 후 사용합니다.

Html, Multipart Form 객체는 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();
    }

}
위의 예시 코드처럼 페이지에서 입력한 값을 /sign/sigin-submit Controller로 전송할 수 있도록 Form 객체를 생성합니다.
그런 다음, View에서 생성한 Form 객체를 출력합니다.
<form <?php echo $this->form(); ?>>
...
</form>
만약, 첨부파일 input이 포함된 Form 객체를 생성해야 한다면 아래 예시 코드처럼 type 옵션을 multipart로 대체합니다.
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', 'multipart');
        $form->set('action', '/sign/sigin-submit');
        $form->run();
    }

}

Static Form 객체

Static Form은 Html, Multipart 처럼 특정 Submit Controller로 비동기 방식을 통해 입력 값을 전송하는 방식이 아닌,
동기(static) 방식으로 특정 URI로 입력 값을 전송하는 방식입니다.
따라서, 일반적으로 Static 방식은 입력 값을 Submit Controller가 아닌, 일반 Controller 혹은 외부 URL로 전송하기 위해 사용합니다.

Static 방식은 아래 예시 코드처럼 사용합니다.
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', 'static');
        $form->set('action', '/sign/sigin2');
        $form->set('method', 'post');
        $form->set('target', 'view');
        $form->run();
    }

}

Form 객체 옵션

Form의 set() 옵션에서 설정 가능한 옵션은 아래와 같습니다.
Option 설명 기본값
type Form의 전송 방식 설정
- html: Submit Controller로 비동기(AJAX) 방식 전송
- multipart: Submit Controller로 비동기(AJAX) 방식 전송(첨부파일 포함)
- static: 동기방식(static)으로 Form 객체를 생성하는 경우
html
id(optional) Form 의 name, id 명을 부여. 설정하지 않는 경우 자동으로 부여 자동생성
action 수신 받을 Controller 혹은 View 설정
method method type을 설정 post
target static 방식으로 전송하려는 경우 'view'로 설정