PHP-Entwicklungsframework Yii Framework-Tutorial (11) UI-Komponente ActiveForm-Beispiel

黄舟
Freigeben: 2023-03-05 07:32:02
Original
1113 Leute haben es durchsucht

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',);}
Nach dem Login kopieren

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,));}
Nach dem Login kopieren

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'),
)); ?>
Nach dem Login kopieren

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.
Nach dem Login kopieren


Die Laufergebnisse sind wie folgt:

vcyzzCgxMSkgVUnX6bz+IEFjdGl2ZUZvcm3KvsD9" src="/uploadfile/2016/0106/20160106062558152.png" />
Nach dem Login kopieren

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 (m.sbmmt.com)!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage