CActiveForm은 CHtml을 사용하여 양식을 만드는 Yii Framework 개발 튜토리얼(7)과 FormModel을 사용하는 Yii Framework 개발 튜토리얼(8)에서 간략하게 소개되었습니다. 며칠 후면 크리스마스가 다가옵니다. 여기에서 산타클로스가 모두가 받고 싶어하는 크리스마스 선물과 크리스마스 저녁 식사로 먹고 싶은 음식에 대한 설문조사를 할 수 있도록 도와주세요.
HTML 양식을 통해 사용자 데이터를 수집하는 것은 웹 프로그램 개발의 주요 작업 중 하나입니다. 양식 디자인 외에도 개발자는 기존 또는 기본 데이터로 양식을 채우고, 사용자 입력의 유효성을 검사하고, 잘못된 입력에 대한 적절한 오류 메시지를 표시하고, 입력을 영구 저장소에 저장해야 합니다. Yii는 MVC 구조를 통해 이 작업 흐름을 크게 단순화합니다.
Yii에서 양식을 처리할 때 일반적으로 다음 단계가 필요합니다.
수집할 데이터 필드를 나타내는 모델 클래스를 만듭니다.
양식 제출에 대한 응답으로 컨트롤러 작업을 만듭니다.
뷰 스크립트에서 컨트롤러 액션과 관련된 폼을 생성합니다.
Create DataModel
class DataModel extends CFormModel{public $firstName;public $lastName; public $favouriteGift; public $favouriteDinner; public function rules(){return array(array('firstName, lastName', 'required'), array('favouriteGift,favouriteDinner', 'safe'));} static $gifts=array('1'=>'iPad','2'=>'Remote control helicopter','3'=>'60 inch 3D LED TV','4'=>'Holy Bible',); static $meals=array('1'=>'Egg','2'=>'Ham','3'=>'Chicken','4'=>'Pork','5'=>'Beer','6'=>'Coke','7'=>'Wine',);}
firstName, lastName은 사용자 이름을 기록하는 데 사용되며 $favouriteGift 및 $favouriteDinner는 사용자의 선물 및 음식 이름을 기록하는 데 사용됩니다. $gifts, $meals는 사용자가 사용할 수 있는 선물 유형과 음식 유형을 정적으로 정의합니다. 여기서 주목해야 할 점은 firstName과 lastName이 필수이고 $favouriteGift와 $favouriteDinner가 복사해도 안전하도록 설정되어 있다는 점입니다. 이는 모델의 규칙에 따라 정의됩니다.
액션 정의
SiteController의 액션 메서드 수정:
public function actionIndex(){$model=new DataModel(); if(!emptyempty($_POST['DataModel'])){$model->attributes=$_POST['DataModel']; if($model->validate()){$this->render('choice', array('model' => $model,)); return;}} $this->render('index', array('model' => $model,));}
여기서 두 개의 뷰가 정의되고, 인덱스는 사용자 입력을 얻는 데 사용되며, 선택은 사용자 선택 결과를 표시합니다. $model->attributes=$_POST ['DataModel']; 안전한 속성 할당에서 설명한 대로 이 코드 줄은 사용자가 제출한 데이터로 모델을 채웁니다. 속성 속성은 이름-값 쌍의 배열을 받아들이고 각 값을 해당 모델 속성에 할당하는 CModel에 의해 정의됩니다.
뷰 정의
먼저 index.php를 정의합니다. 이 예에서는 CActiveForm이 클라이언트와 서버 측 모두에서 원활하고 일관된 확인을 제공하는 데 사용됩니다.
>beginWidget('CActiveForm', array( 'id'=>'user-form', 'enableAjaxValidation'=>true, 'enableClientValidation'=>true, 'focus'=>array($model,'firstName'), )); ?>
이 예는 상대적으로 간단하며 이러한 복잡한 검사를 사용하지 않습니다. FirstName과 LastName이 비어 있지 않아야 하며 이는 DataModel의 규칙에서 필수로 정의됩니다.
beginWidget('CActiveForm'); ?> errorSummary($model); ?> label($model,'firstName'); ?>textField($model,'firstName') ?> label($model,'lastName'); ?>textField($model,'lastName') ?> Choose your Christmas Gift radioButtonList($model,'favouriteGift',DataModel::$gifts) ?> Choose your Christmas dinner checkBoxList($model,'favouriteDinner',DataModel::$meals) ?> endWidget(); ?> View Choice 就更简单,显示用户选择结果: Christmas "; ?>firstName . ' ' . $model->lastName . '.' ;?> You will be givenecho DataModel::$gifts[$model->favouriteGift];?>on Christmas Day. And you will haveforeach($model->favouriteDinner as $dinner){echo DataModel::$meals[$dinner] . ' ';}?> for Christmas dinner.
실행 결과는 다음과 같습니다.
vcyzzCgxMSkgVUnX6bz+IEFjdGl2ZUZvcm3KvsD9" src="/uploadfile/2016/0106/20160106062558152.png" />
위 PHP 개발 프레임워크입니다. Yii 프레임워크 튜토리얼(11) UI 구성요소 ActiveForm의 내용 예. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!