FuelPHP-양식 프로그래밍

FuelPHP는 세 가지 클래스를 제공합니다. Form Fieldset, 및 Input, 양식 프로그래밍을 수행합니다.

  • Form class는 모든 HTML 양식 요소를 만드는 옵션을 제공합니다.

  • Fieldset 클래스는 모델 및 유효성 검사를 통합하는 상위 수준의 메서드를 통해 html 요소를 만드는 옵션을 제공합니다.

  • Input class는 http 매개 변수, 서버 변수 및 사용자 에이전트뿐만 아니라 html 양식을 통해 제출 된 데이터를 구문 분석하는 옵션을 제공합니다.

이 장에서 배우자 Form programming FuelPHP에서.

형태

앞에서 논의했듯이 Form 클래스는 html 양식 요소를 생성하는 방법을 제공하며 중요한 방법은 다음과 같습니다.

열다()

open()새 양식을 만드는 데 사용됩니다. 다음 두 가지 매개 변수를 제공합니다.

  • $attributes − 배열 형태의 태그 속성 또는 문자열 형태의 액션 URL.

  • $hidden − 숨겨진 필드 이름과 그 값의 배열.

echo Form::open('/employee/add'); 
echo Form::open(array('action' => '/employee/add', 'method' => 'post'));

닫기()

close() 단순히 양식을 닫습니다.

echo Form::close();

입력()

input()html 입력 요소를 생성합니다. 다음과 같은 세 가지 매개 변수가 있습니다.

  • $field − 입력 요소의 이름

  • $value − 입력 요소의 값

  • $attributes − 배열로 입력 요소의 속성

echo Form::input('name', 'jon', array('style' => 'border: 20px;'));

라벨 요소

labelhtml 레이블 요소를 만듭니다. 다음과 같은 세 가지 매개 변수가 있습니다.

  • $label − 표시 할 라벨

  • $id − 관련 양식 요소 ID

  • $attributes − 레이블 요소의 속성을 배열로

echo Form::label('Employee Name', 'employee_name');

숨겨진

hidden 입력 요소의 유형을 숨김으로 설정한다는 점을 제외하면 입력 방법과 유사합니다.

암호

password 입력 요소의 유형을 암호로 설정한다는 점을 제외하면 입력 방법과 유사합니다.

라디오

radio입력 요소의 유형을 라디오로 설정한다는 점을 제외하면 입력 방법과 유사합니다. 다음 네 가지 매개 변수가 있습니다.

  • $field − 입력 요소의 이름

  • $value − 입력 요소의 값

  • $checked − 항목 확인 여부 (참 / 거짓)

  • $attributes − 배열로 입력 요소의 속성

echo Form::label('Male', 'gender'); 
echo Form::radio('gender', 'Male', true); 
echo Form::label('Female', 'gender'); 
echo Form::radio('gender', 'Female');

체크 박스

checkbox입력 요소의 유형을 확인란으로 설정한다는 점을 제외하면 입력 방법과 유사합니다. 다음 네 가지 매개 변수가 있습니다.

  • $field − 입력 요소의 이름

  • $value − 입력 요소의 값

  • $checked − 항목 확인 여부 (참 / 거짓)

  • $attributes − 배열로 입력 요소의 속성

echo Form::label('Male', 'gender'); 
echo Form::checkbox('gender', 'Male', true);
echo Form::label('Female', 'gender'); 
echo Form::checkbox('gender', 'Female');

파일

file 입력 요소의 유형을 파일로 설정한다는 점을 제외하면 입력 방법과 유사합니다.

텍스트 영역

textareahtml textarea 요소를 만듭니다. 다음과 같은 세 가지 매개 변수가 있습니다.

  • $field − 텍스트 영역 요소의 이름

  • $value − 텍스트 영역 요소의 값

  • $attributes − 배열로 텍스트 영역 요소의 속성

echo Form::textarea ('description', 'original data (value)', array ('rows' => 6, 
      'cols' => 8));

고르다

selectHTML 선택 요소를 만듭니다. 다음 네 가지 매개 변수가 있습니다.

  • $field − 선택 요소의 이름

  • $values − 초기 선택 값

  • $options− 배열로 옵션. 옵션은 중첩 배열을 사용하여 그룹화 될 수 있습니다.

  • $attributes − 배열로 입력 요소의 속성

echo Form::select ( 
   'country',  
   'none',  
   array ( 
      'none'  => 'None', 
      'asia'  => array ( 
         'in' > 'India', 
         'cn' => 'China' 
      ), 
      
      'us' => 'United States' 
   ) 
);

제출

submit 제출할 입력 요소의 유형을 설정한다는 점을 제외하면 입력 방법과 유사합니다.

단추

buttonhtml 버튼 요소를 만듭니다. 다음과 같은 세 가지 매개 변수가 있습니다.

  • $field − 버튼 요소의 이름

  • $value − 버튼 요소의 값

  • $attributes − 버튼 요소의 속성을 배열로

echo Form::button('emp_submit', 'Submit');

초기화

reset 재설정 할 입력 요소의 유형을 설정한다는 점을 제외하면 입력 방법과 유사합니다.

fieldset_open

fieldset_open은 html 필드 세트와 범례 요소를 만듭니다. 다음 두 가지 매개 변수가 있습니다.

  • attributes − 배열로 필드 셋 요소의 속성

  • legend − 생성 할 범례의 이름

// returns <fieldset class = "example-class" id = "example-id">
<legend>
   Custom Legend
</legend> 

echo Form::fieldset_open (array (
   'class'  => 'example-class', 
   'id'     => 'exampleid', 
   'legend' => 'Custom Legend'
));

fieldset_close

fieldset_close는 HTML 필드 세트 닫기 태그를 만듭니다.

// returns </fieldset> 
echo Form::fieldset_close();

입력 클래스

입력 클래스는 양식 세부 사항과 함께 모든 요청 데이터를 읽는 메소드를 제공합니다. 중요한 방법 중 일부는 다음과 같습니다.

uri

uri 요청의 현재 URI를 반환합니다.

// request: http://localhost:8080/employee/welcome  
echo Input::uri(); // return /employee/welcome

방법

method 요청에 사용 된 HTTP 메서드를 반환합니다.

echo Input::method() // "POST"

가져 오기

get$ _GET 변수를 읽을 수 있습니다. 다음 두 가지 매개 변수가 있습니다.

  • $index − $ _GET 배열의 인덱스

  • $default − 색인을 찾을 수없는 경우 기본값.

echo Input::get('age', '20'); // returns $_GET['age']

우편

post$ _POST 변수를 읽을 수 있습니다. 다음 두 가지 매개 변수가 있습니다.

  • $index − $ _POST 배열의 인덱스

  • $default − 색인을 찾을 수없는 경우 기본값

echo Input::get('age', '20'); // returns $_POST['age']

매개 변수

param$ _GET, $ _POST, $ _PUT 또는 $ _DELETE 변수에서 항목을 가져올 수 있습니다. 다음 두 가지 매개 변수가 있습니다.

  • $index − 배열의 인덱스

  • $default − 색인을 찾을 수없는 경우 기본값

매개 변수를 지정하지 않으면 모든 항목이 반환됩니다.

echo Input::param('age', '20'); // returns $_POST['age']

파일

file$ _FILE 변수를 읽을 수 있습니다. 다음 두 가지 매개 변수가 있습니다.

  • $index − $ _POST 배열의 인덱스

  • $default − 색인을 찾을 수없는 경우 기본값

echo Input::file();

is_ajax

is_ajax 는 요청이 AJAX를 통해 이루어진 경우 true를 반환합니다.

echo Input::is_ajax() // return false

실험 계획안

protocol 요청에 사용 된 HTTP 프로토콜을 반환합니다.

echo Input::protocol() // returns "HTTP"

ip

ip 요청이 이루어진 IP 주소를 반환합니다.

echo Input::ip() // returns "84.45.34.24" (Public IP Address)

real_ip

real_ip 요청이 이루어진 실제 IP 주소 (클라이언트가 프록시 뒤에있는 경우)를 반환하려고합니다.

echo Input::real_ip() // returns "10.76.12.1" (local private IP Address)

섬기는 사람

server$ _SERVER 변수를 읽을 수 있습니다. 다음 두 가지 매개 변수가 있습니다.

  • $index − $ _POST 배열의 인덱스

  • $default − 색인을 찾을 수없는 경우 기본값.

echo Input::server('HTTP_HOST'); // returns localhost:8080

리퍼러

referrer$ _SERVER 변수에서 참조자를 반환합니다. 현재 요청의 http 참조자를 가져 오는 바로 가기 방법입니다.

사용자 에이전트

user_agent$ _SERVER 변수에서 사용자 에이전트를 반환합니다. 현재 요청의 http 사용자 에이전트를 가져 오는 바로 가기 방법입니다.

query_string

query_string$ _SERVER 변수에서 쿼리 문자열을 반환합니다. 현재 요청의 쿼리 문자열을 가져 오는 바로 가기 메서드입니다.

헤더

headers특정 또는 모든 헤더를 반환합니다. 다음 두 가지 매개 변수가 있습니다.

  • $index − HTTP 헤더의 이름

  • $default − 색인을 찾을 수없는 경우 기본값.

echo Input::headers('Content-Type'); // returns "text/html"

신장

extension 현재 요청의 URI 확장을 반환합니다.

// Example URL: http://localhost/test/ 
echo Input::extension();  // NULL  

// Example URL: http://localhost/test.html 
echo Input::extension();  // 'html'

작업 예

Form 및 Input 클래스를 사용하여 새 직원을 추가하는 간단한 양식을 만들어 보겠습니다.

양식 만들기

새로운 액션 만들기, get_add 다음과 같이 직원 컨트롤러에서.

public function get_add() { 
   return Response::forge(View::forge('employee/add')); 
}

이제 다음과 같이 작업, fuel / app / views / employee / add.php에 대한보기를 추가하십시오.

<!DOCTYPE html> 
<html lang = "en"> 
   <head> 
      <title>Employee :: add page</title> 
      <meta charset = "utf-8"> 
      <meta name = "viewport" content = "width = device-width, initial-scale = 1"> 
      <?php echo Asset::css('bootstrap.css'); ?> 
   </head>
   
   <body> 
      <div class = "container"> 
         <?php 
            echo Form::open(array('action' => 'employee/add', 'method' => 'post')); 
         ?>  
         
         <div class = "form-group"> 
            <?php 
               echo Form::label('Employee name:', 'name'); 
               echo Form::input('name', '', array('class' => 'form-control')); 
            ?> 
         </div> 
         
         <div class = "form-group"> 
            <?php 
               echo Form::label('Employee age:', 'age'); 
               echo Form::input('age', '', array('class' => 'form-control')); 
            ?> 
         </div> 
         
         <?php echo Form::button('frmbutton', 'Submit', array(
            'class' => 'btn btn-default')); 
         ?> 
         
         <?php 
            echo Form::close(); 
         ?> 
      </div> 
   </body> 
   
</html>

여기서 우리는 bootstrap양식을 디자인합니다. FuelPHP는 부트 스트랩 구성 요소를 완벽하게 지원합니다. 이제 http : // localhost : 8080 / employee / add 페이지를 요청하면 다음 양식이 표시됩니다.

프로세스 양식

다음 과 같이 양식을 처리하고 사용자가 입력 한 직원 데이터를 직원 컨트롤러의 데이터베이스에 추가하는 새 작업 인 post_add 를 만듭니다 .

public function post_add() { 
   $name = Input::post('name'); 
   $age = Input::post('age'); 
   $model = new model_employee(); 
   $model->name = $name; 
   $model->age = $age; 
   $model->save();  
   Response::redirect('employee/list'); 
}

여기에서는 사용자가 입력 한 데이터가 데이터베이스에 저장되면 직원 목록 페이지로 리디렉션되었습니다. 다음으로 직원 목록 페이지를 만듭니다.

직원 나열

다음과 같이 데이터베이스에 직원을 나열하는 새 작업 action_list를 만듭니다.

public function action_list() { 
   $data = array(); 
   $data['emps'] = model_employee::find('all');
   return Response::forge(view::forge('employee/list', $data)); 
}

새보기 만들기, fuel/app/views/employee/list 위의 작업을 위해 다음과 같이하십시오.

<ul> 
   <?php 
      foreach($emps as $emp) {  
   ?> 
   <li><?php echo $emp['name']; ?></li> 
   <?php 
   } 
   ?> 
</ul>

양식 확인

이제 URL을 요청하고 http://localhost:8080/employee/add, 다음 스크린 샷에 표시된대로 일부 직원 데이터를 입력하고 양식을 제출하십시오.

그러면 다음과 같이 데이터베이스에서 사용 가능한 모든 직원 (새로 추가 된 직원 포함)이 표시됩니다.