CActiveForm wurde im Yii Framework-Entwicklungs-Tutorial (7) mit CHtml zum Erstellen eines Formulars und im Yii Framework-Entwicklungs-Tutorial (8) mit FormModel kurz vorgestellt. In ein paar Tagen steht Weihnachten vor der Tür. Helfen Sie dem Weihnachtsmann dabei, eine Umfrage zu den Weihnachtsgeschenken zu erstellen, die sich jeder wünscht, und zu den Speisen, die er zum Weihnachtsessen essen möchte.
Hier teilen wir einen Teil des Codes als Framework für nachfolgende Beispiele. Es kopiert im Grunde das Hello World-Beispiel, fügt ein leeres DataModel hinzu und verwendet den Standard-Controller (SiteController) und die Standard-Aktion (actionIndex). Verwenden Sie die Standardkonfigurationsdatei und den Code-Download.
Das Sammeln von Benutzerdaten über HTML-Formulare ist eine der Hauptaufgaben der Webprogrammentwicklung. Zusätzlich zum Formularentwurf müssen Entwickler das Formular auch mit vorhandenen oder Standarddaten füllen, Benutzereingaben validieren, entsprechende Fehlermeldungen für ungültige Eingaben anzeigen und Eingaben im dauerhaften Speicher speichern. Yii vereinfacht diesen Workflow mit seiner MVC-Struktur erheblich.
Bei der Verarbeitung von Formularen in Yii sind in der Regel folgende Schritte erforderlich:
Erstellen Sie eine Modellklasse, die die zu sammelnden Datenfelder darstellt.
Erstellen Sie eine Controller-Aktion als Reaktion auf die Formularübermittlung.
Erstellen Sie das Formular für die Controller-Aktion im Ansichtsskript.
Datenmodell erstellen
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 und lastName werden verwendet, um den Namen des Benutzers aufzuzeichnen, $favouriteGift und $favouriteDinner werden verwendet, um die Namen der Geschenke und Lebensmittel des Benutzers aufzuzeichnen. $gifts, $meals definieren statisch die Arten von Geschenken und Lebensmittelarten, die den Benutzern zur Verfügung stehen. Hierbei ist zu beachten, dass „Vorname“ und „Nachname“ erforderlich sind und dass „$favoriteGift“ und „$favoriteDinner“ so eingestellt sind, dass sie sicher kopiert werden können. Diese werden durch die Regeln des Modells definiert.
Aktion definieren
Ändern Sie die Aktionsmethode von 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,));}
Hier werden zwei Ansichten definiert, der Index wird verwendet, um Benutzereingaben zu erhalten, und die Auswahl zeigt die Benutzerauswahl an Ergebnisse. $model->attributes=$_POST ['DataModel']; Wie wir in der sicheren Attributzuweisung besprochen haben, füllt diese Codezeile das Modell mit vom Benutzer übermittelten Daten. Das Attribute-Attribut wird von CModel definiert, das ein Array von Name-Wert-Paaren akzeptiert und jeden Wert dem entsprechenden Modellattribut zuweist.
Ansicht definieren
Definieren Sie zunächst index.php. In diesem Beispiel wird CActiveForm für eine nahtlose und konsistente Überprüfung sowohl auf der Client- als auch auf der Serverseite verwendet.
>beginWidget('CActiveForm', array( 'id'=>'user-form', 'enableAjaxValidation'=>true, 'enableClientValidation'=>true, 'focus'=>array($model,'firstName'), )); ?>
Dieses Beispiel ist relativ einfach und verwendet diese komplexen Prüfungen nicht. Es erfordert lediglich, dass „Vorname“ und „Nachname“ nicht leer sind, was in den Regeln in DataModel durch „erforderlich“ definiert ist.
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.
Die Laufergebnisse sind wie folgt:
vcyzzCgxMSkgVUnX6bz+IEFjdGl2ZUZvcm3KvsD9" src="/uploadfile/2016/0106/20160106062558152.png" />
Oben Dies ist der Inhalt des PHP-Entwicklungsframeworks Yii Framework-Tutorial (11) UI-Komponente ActiveForm-Beispiel Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!