>  기사  >  백엔드 개발  >  yii 프레임워크 양식 모델은 양식 데이터를 배열 형식으로 제출합니다.

yii 프레임워크 양식 모델은 양식 데이터를 배열 형식으로 제출합니다.

WBOY
WBOY원래의
2016-07-25 09:12:511122검색

Yii 문서의 설명에 따르면 Yii 양식 처리의 일반적인 프로세스는 다음과 같습니다. 양식에 해당하는 모델 클래스를 생성하고 필드 유효성 검사 규칙을 설정합니다. 양식 제출에 해당하는 작업을 만들고 제출된 콘텐츠를 처리합니다. 보기에서 양식 만들기 방금 소규모 프로젝트에서 Ajax를 사용하여 양식 정보를 제출하고 확인하고 저장하고 싶었지만 새로 고침하지 않는 제출에 숨겨진 iframe을 사용하고 싶지 않았고 모델 클래스의 확인 방법을 사용할 수 있었습니다. 액션에서는 양식 배열 제출 방법을 사용하려고 생각했습니다. 예, 양식 코드:

코드 복사

다음에 바로 $_POST['arr을 사용할 수 있습니다. submit '] 제출된 데이터를 얻으려면 $_POST['arr'] 은 다음과 같습니다. 정렬 ( [0] => 아 [1] => ㄴ [2] => ㄷ )

마찬가지로 다음 양식을 사용하여 제출하는 경우:

코드 복사

$_POST[' arr']은 다음과 같습니다: 정렬 ( [3] => 아 [6] => ㄴ [8] => ㄷ )

물론 2차원 배열을 제출할 수도 있습니다.

코드를

$_POST['arr'] 다음과 같이 복사하세요. 정렬 ( [0] => 배열 ( [이름1] => 아 ) [1] => 배열 ( [이름2] => ㄴ ) [2] => 배열 ( [이름3] => ㄷ ) ) 여기서 문제가 발생합니다. 첫 번째 하위 배열의 키를 설정하지 않으면 배열 생성 시 각 값이 순차적으로 추가됩니다. 정보를 배열에 저장하려면 키 값만 추가하면 됩니다. 다음과 같이:

코드 복사

$_POST[ 'arr']은 다음과 같습니다 정렬 ( [a] => 배열 ( [이름1] => a1 [값1] => a2 ) => 배열 ( [이름2] => b1 [값2] => b2 ) )

ajax를 사용하여 양식을 제출하고 yii 양식 모델을 사용하여 이를 검증하는 예입니다. 첫 번째는 가장 간단한 검증 방법만 있는 모델 클래스 부분입니다.

  1. class LandingForm은 CFormModel을 확장합니다
  2. {
  3. public $landing_title;
  4. public $landing_content;
  5. 공개 $landing_position;
  6. 공개 함수 규칙()
  7. {
  8. return array(
  9. array('landing_title, land_content', 'required'),
  10. array('landing_position', 'default' , 'value'=>''),
  11. );
  12. }
  13. }
코드 복사

모델 클래스 매개변수 검증 방법을 설정할 때, 공개 매개변수별로 규칙을 설정해야 합니다. 설정된 규칙이 없는 매개변수가 있는 경우, $_POST의 폼 값을 이용하여 모델에 값을 할당한 후, 설정되지 않은 매개변수 값을 설정해야 합니다. 규칙은 비어 있습니다. 작업의 양식으로 제출된 매개변수를 가져와서 다음을 확인하세요.

  1. $model = new LandingForm;
  2. $model->attributes = $_POST['form'];
  3. if($model- >validate()){
  4. $info = $model->attributes;
  5. ...
  6. }
코드 복사

마지막은 jquery를 사용하는 프런트엔드 제출 양식의 코드입니다.

  1. var info = new Object();
  2. info = { 'form[landing_title]': Landing_title,
  3. 'form[landing_content]' : 랜딩_콘텐츠,
  4. 'form[landing_position]': 랜딩_위치,
  5. };
  6. var url = "...";
  7. $.post(url, info, function(rst){
  8. ...
  9. });
코드 복사


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.