강력한 것은 양식을 처리 할 수있는 PHP 라이브러리입니다. HTML 양식을 구문 분석하고 PHP 코드에서 조작 한 다음 렌더링 할 수 있습니다.
작곡가를 통해 :
{
"require" : {
"gregwar/formidable" : " dev-master "
}
}또는 저장소의 클론으로 :
git clone https://github.com/Gregwar/Formidable.git또는 다운로드 :
먼저, 예를 들어 HTML에 코드를 작성해야합니다.
<!-- forms/example.html -->
< form method =" post " >
Enter your name:
< input type =" text " name =" name " /> < br />
< input type =" submit " />
</ form >PHP 코드에서 양식을 엄청나게 제공하십시오.
<?php
session_start ();
include ( ' vendor/autoload.php ' );
// Formidable will parse the form and use it to check integrity
// on the server-side
$ form = new Gregwar Formidable Form ( ' forms/example.html ' );
$ form -> handle ( function () {
echo " Form OK! " ;
}, function ( $ errors ) {
echo " Errors: <br/> " ;
foreach ( $ errors as $ error ) {
echo " $ error <br /> " ;
}
});
echo $ form ;단순 해요?
그런 다음 강력한 API를 사용하여 양식으로 재생할 수 있습니다.
<?php
// Will set the value of the field
$ form -> name = " Bob " ;
// Will get the value of the field
$ name = $ form -> name ;
// Adds a constraint on the name
$ form -> addConstraint ( ' name ' , function ( $ value ) {
if ( strlen ( $ value ) < 10 ) {
return ' Your name should be at least 10 characters! ' ;
}
});
// Adds a constraint on the whole form
$ form -> addConstraint ( function ( $ form ) {
if ( $ form -> getValue ( ' pass1 ' ) != $ form -> getValue ( ' pass2 ' )) {
return ' The passwords are different ' ;
}
});HTML 코드에서 양식을 변경하고 제약 조건을 직접 추가 할 수도 있습니다.
< input type =" text " name =" name " minlength =" 10 " />이렇게하면 서버 측 제한 조건을 확인할 때 텍스트가 최소 10 자 길이가됩니다.
보안관이 양식을 확보하기를 원하십니까?
< input type =" captcha " name =" code " />이렇게하면 클라이언트 측에서 이미지와 입력 필드가 생성되고 서버 측에서 세션을 사용하여 코드가 올바른지 확인합니다.
이는 Gregwar/Captcha 라이브러리와 의존성을 사용합니다 (작곡가를 사용하여 종속성을 설치해야 함).
다음 입력 유형이 지원됩니다.
input 태그 :textnumber 또는 numeric , min 및 max 속성을 참조하십시오int 또는 integer , min 및 max 속성을 참조하십시오filecheckboxradiohiddenpasswordcaptcha 는 자동으로 이미지를 생성합니다date , 세 개의 select를 생성하고 DateTime 데이터로 반환합니다.multiradio 및 multicheckbox (소스 섹션 참조)textareaselect 일부 속성은 maxlength 와 같이 HTML-Valid가 아닙니다.
< input type =" text " name =" name " maxlength =" 10 " />HTML 형식으로 렌더링되지 않지만 무결성을 확인하는 데 사용됩니다.
사용 가능한 속성 목록은 다음과 같습니다.
minlength : 값의 최소 길이maxlength : 값의 최대 길이regex : 가치가 존중 해야하는 regexpmin (숫자) : 최소값max (숫자) : 최대 값required : 필드가 필요하다고 말하십시오readonly : 필드는 Readonly이며 수정자가되어서는 안됩니다.value : 필드의 기본값min-entries : 배수를 제공 해야하는 최소 항목 수를 지정하십시오 (아래 참조).max-entries : 배수를 제공 할 수있는 최대 항목 수를 지정합니다 (아래 참조).entries : 배수에 대한 최소 및 최대 항목 수를 지정합니다 (아래 참조) 이 메소드를 $form 개체에서 호출 할 수 있습니다.
posted() : 양식이 게시 된 경우 true를 반환합니다check() : 양식을 확인하고 유효성 오류 배열을 반환합니다.handle($callback, $errorCallback) ,이 바로 가기 메소드 통화 게시 및 check () 및 양식이 유효한 경우 $errorCallback else $callback 호출됩니다.setAttribute($field, $attr, $value) : 필드에 추가 속성을 설정합니다.getAttribute($field, $attr) : 필드에서 추가 속성을 얻습니다.source($source, $values) : 소스를 공급합니다 ( "소스"섹션 참조)setPlaceholder($name, $value) : 자리 표시 자 값을 설정합니다 (아래 참조)addConstraint($field, $callback) : 필드에 사용자 정의 제약 조건을 추가하면 callback 이 필드 값으로 호출되며 문제가 없으면 False 또는 오류 문자열이 있으면 거짓을 반환해야합니다. 폐쇄를 통과하면 폐쇄는 인수로 전달 된 양식과 함께 호출되며 여러 필드 또는 양식 정보와 관련된 일부 테스트를 수행 할 수 있습니다.setValue($field, $value) : 필드의 값을 설정하십시오getValue($field) : 필드의 값을 가져옵니다setValues(array $values) : 일부 필드의 값을 설정하십시오getValues() : 모든 필드의 값을 얻습니다 추가 CSRF 토큰이 양식에 자동으로 삽입되고 제출되면 확인됩니다. 따라서 모든 양식이 확보됩니다.
CSRF 토큰의 존재 및 유효성은 posted 메소드를 호출 할 때 양식이 게시되었는지 확인하는 데 사용됩니다 (내부적으로 handle 에 사용됨)
form 으로 name 속성을 지정하면 CSRF 토큰 이이 특정 양식에 대해 다릅니다. 이는 동일한 페이지에 여러 양식이있는 경우 어떤 형태의 차이를 제출할 수있게합니다.
오류에 대한 언어는 setLanguage() 로 설정할 수 있습니다.
<?php
// Will set the language to french for errors
$ form -> setLanguage ( new Gregwar Formidable Language French ); 언어가 Language 디렉토리에서 지원되는지 확인하고 주저하지 말고 참여하십시오!
소싱 시스템을 사용하여 select , multiradio 또는 multicheckbox 동적으로 채울 수 있습니다.
< input type =" multicheckbox " name =" colours " source =" colours " /> 그런 다음 source 로 채우십시오.
<?php
$ form -> source ( ' colours ' , array ( ' red ' , ' yellow ' , ' blue ' ));이것은 일부 확인란으로 렌더링됩니다.
select 사용하여이 방법을 수행 할 수 있습니다.
< select name =" colour " >
< options source =" colours " />
< option value =" other " > Other </ option >
</ select >그런 다음 동일한 방법으로 소스하십시오
파일 또는 문자열에서 양식을 만들 수 있습니다. 자동으로 감지됩니다.
<?php
$ form = new Gregwar Formidable Form ( ' <form method="post">
<select name="colour">
<option value="blue">Blue</option>
<option selected value="red">Red</option>
<option value="green">Green</option>
</select>
</form> ' );
echo $ form -> getValue ( ' colour ' ) . "n" ;
// red
// Sets the color to blue
$ form -> setValue ( ' colour ' , ' blue ' );
echo $ form ;
/* Will display:
<form method="post">
<select name="colour" >
<option selected="selected" value="blue">Blue</option>
<option value="red">Red</option>
<option value="green">Green</option>
</select>
<input type="hidden" name="posted_token" value="d293dc38017381b6086ff1a856c1e8fe43738c60" />
</form>
*/ 또한 mapping 속성을 사용하여 양식을 채우거나 배열 또는 객체에서 양식 데이터를 되 찾을 수 있습니다.
<?php
class Person
{
protected $ name ;
public function getName () { return $ this -> name ; }
public function setName ( $ name ) {
$ this -> name = $ name ;
}
}
$ person = new Person ;
$ person -> setName ( ' Jack ' );
$ form = new Gregwar Formidable Form ( ' <form method="post">
<input type="text" name="name" mapping="name" />
</form> ' );
$ form -> setData ( $ person );
echo $ form ;
/*
Will output something like:
<form method="post">
<input required="required" type="text" name="name" value="Jack" />
<input type="hidden" name="posted_token" value="aa27f437cc6127c244db14361fd614af51c79aac" />
</form>
*/매핑은 Symfony PropertyAccessor를 사용하여 위의 예에서와 같이 액세서를 사용하여 속성을 채우실 수 있습니다.
당신은 사용할 수 있습니다 :
getData($entity = array()) : 데이터가 채워진 데이터와 함께 엔티티를 채우고 반환합니다.setData($entity) : 엔티티 속성으로 양식을 채 웁니다 <multiple> 태그를 사용하여 여러 하위 형식을 페이지에 추가 할 수 있습니다.
< form method =" post " >
Film name: < input type =" text " name =" film_name " mapping =" name " />
< h2 > Actors </ h2 >
< multiple name =" actors " mapping =" actors " >
First name: < input name =" first_name " mapping =" firstName " /> < br />
Last name: < input name =" last_name " mapping =" lastName " /> < br />
</ multiple >
< input type =" submit " />
</ form > 이를 통해 <multiple> 필드와 똑같이 사용할 수 있지만 요소 배열이 포함되어 있습니다.
일부 JS는 페이지에 주입되어 일부 요소를 추가/제거 할 수 있습니다.
min-entries 및 max-entries 제약 조건을 사용하여 배수의 항목 수에 대한 제한을 설정할 수 있습니다.
min-entries 및 max-entries 에 대해 동일한 값을 지정하거나 entries 값 (실제로 수행 할 별칭)을 지정하는 경우 R 입력 수가 수정되고 JavaScript가 필요하지 않습니다.
어떤 경우에는 사용자 정의 데이터를 양식에 추가하려면이 작업을 수행하는 두 가지 방법이 있습니다.
{{ something }} 구문을 사용하면 코드에서 데이터를 간단히 주입 할 수 있습니다.
<?php
$ form = new Gregwar Formidable Form ( ' <form method="post">
Hello {{ name }}!
</form> ' );
$ form -> setPlaceholder ( ' name ' , ' Bob ' );
echo $ form ; 위의 예에서 {{ name }} Bob 로 렌더링됩니다.
<form> 및 입력 태그를 제외하고 어쨌든 자리 표시자는 사용될 수 있습니다.
<?php
$ form = new Gregwar Formidable Form ( ' <form method="post">
<span style="color:{{ color }}">Hello</span>
</form> ' );
$ form -> setPlaceholder ( ' color ' , ' red ' );
echo $ form ;예를 들어 템플릿과 같이 PHP를 사용하여 양식을 작성할 수도 있습니다.
<form>
<?php echo $ label ; ?> : <input type="text" name="name" />
<input type="submit" />
</form>그런 다음 템플릿 변수를 두 번째 인수로 전달하는 양식을 주입하십시오.
<?php
$ form = new Gregwar Formidable Form ( ' the-above-form.php ' , array ( ' label ' => ' Your name ' )); $label PHP를 사용하여 해석됩니다.
공연의 이유로, 구문 분석 된 양식을 캐시 할 수 있습니다.
이렇게하려면 단순히 생성자의 세 번째 인수로 true 전달하십시오.
<?php
/**
* Parsed data for the form will be serialized and stored in a cache file,
* if you use this form often, this will offer you better performances.
*/
$ form = new Gregwar Formidable Form ( ' form.html ' , null , true ); 이렇게하면 Gregwar/Cache 시스템이 사용 되므로이 저장소의 작곡가 종속성을 얻거나 수동으로 설치해야합니다. 기본적으로 캐시 파일은 스크립트가 실행되는 cache 디렉토리에 기록됩니다.
performances.php 스크립트 examples/ 디렉토리에서 캐시와 함께 성능 게인의 예를 제공합니다.
GregwarCacheCache 의 인스턴스를 세 번째 매개 변수로 전달할 수도 있습니다.이 매개 변수는 캐시 디렉토리를 설정할 수 있습니다.
GregwarFormidable 은 MIT 라이센스에 따라 있으며 자세한 내용은 LICENSE 파일을 살펴보십시오.
v2.0.0 PHP <5.6에 대한 최종 지원
v2.1.0 보안 문자 라이브러리에서 하드 의존성을 제거하십시오