Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Entwicklungsframework Yii Framework-Tutorial (11) UI-Komponente ActiveForm-Beispiel

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

黄舟
黄舟Original
2017-01-21 10:08:461038Durchsuche

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)!


Stellungnahme:
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