


Detaillierte Erläuterung des Beispiels für die Yii2-Erstellungsform (ActiveForm) method_php
Das Beispiel in diesem Artikel beschreibt die Methode zum Erstellen eines Formulars (ActiveForm) in Yii2. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Da das Formular einige Verifizierungsinformationen enthält und viele und komplexe Attributeinstellungen aufweist, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen, wenn etwas nicht stimmt
Inhaltsverzeichnis
Formulargenerierung
Methoden im Formular
ActiveForm::begin()-Methode
ActiveForm::end()-Methode
getClientOptions()-Methode
Andere Methoden: errorSummary,validate,validateMultiple
Parameter im Formular
Die Eigenschaften des Formulars selbst
Attribute, die sich auf jedes Feldeingabefeld im Formular beziehen
$fieldConfig
Über die Attribute der Verifizierung
Über die Attribute jedes Feldcontainerstils
Ajax-Überprüfung
Front-End-JS-Ereignis
Andere Attribute im Formular
Werfen wir zunächst einen Blick auf das einfachste Anmeldeformular in Yii und den generierten HTML-Code und die Schnittstelle, um ein intuitives Verständnis zu erhalten
<?php $form = ActiveForm::begin(['id' => 'login-form']); ?> <?= $form->field($model, 'username') ?> <?= $form->field($model, 'password')->passwordInput() ?> <?= $form->field($model, 'rememberMe')->checkbox() ?> <div style="color:#999;margin:1em 0"> If you forgot your password you can <?= Html::a('reset it', ['site/request-password-reset']) ?> </div> <div class="form-group"> <?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?> </div> <?php ActiveForm::end(); ?>
Das Folgende ist das generierte Formular-HTML, ich habe 5 Teile darin markiert.
1. Formularerstellung
In Yii ist ein Formular sowohl ein ActiveForm als auch ein Widget. Wie Sie oben sehen können, beginnt es mit begin
<?php $form = ActiveForm::begin(['id' => 'login-form']); ?>
Die Mitte ist das Eingabefeld für jedes Element und endet mit end
<?php ActiveForm::end(); ?>
2. Methoden in der Form
Die begin()-Methode in Widget ruft die int-Methode auf
public function init()
Die letzte end()-Methode ruft die run-Methode auf
public function run()
1. ActiveForm::begin()-Methode
//这个是在执行 $form = ActiveForm::begin(['id' => 'login-form']); 中的begin方法的时候调用的 public function init() { //设置表单元素form的id if (!isset($this->options['id'])) { $this->options['id'] = $this->getId(); } //设置表单中间的要生成各个field的所使用的类 if (!isset($this->fieldConfig['class'])) { $this->fieldConfig['class'] = ActiveField::className(); } //这个就是输出表单的开始标签 //如:<form id="login-form" action="/lulublog/frontend/web/index.php?r=site/login" method="post"> echo Html::beginForm($this->action, $this->method, $this->options); }
2. ActiveForm::end()-Methode
//这个是在执行 ActiveForm::end(); 中的end方法的时候调用的 public function run() { //下面这个就是往视图中注册表单的js验证脚本, if (!empty($this->attributes)) { $id = $this->options['id']; $options = Json::encode($this->getClientOptions()); $attributes = Json::encode($this->attributes); $view = $this->getView(); ActiveFormAsset::register($view); /* * $attributes:为要验证的所有的field数组。它的值是在activeform中创建field的时候,在field的begin方法中给它赋值的。 * 其中每个field又是一个数组,为这个field的各个参数 * 比如username的field中的参数有 * validate、id、name、 * validateOnChange、validateOnType、validationDelay、 * container、input、error * * $options:为这个表单整体的属性,如: * errorSummary、validateOnSubmit、 * errorCssClass、successCssClass、validatingCssClass、 * ajaxParam、ajaxDataType */ $view->registerJs("jQuery('#$id').yiiActiveForm($attributes, $options);"); } //输出表单的结束标签 echo Html::endForm(); }
3. getClientOptions()-Methode
/* * 设置表单的全局的一些样式属性以及js回调事件等 */ protected function getClientOptions() { $options = [ 'errorSummary' => '.' . $this->errorSummaryCssClass, 'validateOnSubmit' => $this->validateOnSubmit, 'errorCssClass' => $this->errorCssClass, 'successCssClass' => $this->successCssClass, 'validatingCssClass' => $this->validatingCssClass, 'ajaxParam' => $this->ajaxParam, 'ajaxDataType' => $this->ajaxDataType, ]; if ($this->validationUrl !== null) { $options['validationUrl'] = Url::to($this->validationUrl); } foreach (['beforeSubmit', 'beforeValidate', 'afterValidate'] as $name) { if (($value = $this->$name) !== null) { $options[$name] = $value instanceof JsExpression ? $value : new JsExpression($value); } } return $options; }
Das Folgende ist der generierte Js-Code für die Formularüberprüfung
jQuery(document).ready(function () { jQuery('#login-form').yiiActiveForm( { "username":{ "validate":function (attribute, value, messages) { yii.validation.required(value, messages, {"message":"Username cannot be blank."}); }, "id":"loginform-username", "name":"username", "validateOnChange":true, "validateOnType":false, "validationDelay":200, "container":".field-loginform-username", "input":"#loginform-username", "error":".help-block"}, "password":{ "validate":function (attribute, value, messages) { yii.validation.required(value, messages, {"message":"Password cannot be blank."}); }, "id":"loginform-password", "name":"password", "validateOnChange":true, "validateOnType":false, "validationDelay":200, "container":".field-loginform-password", "input":"#loginform-password", "error":".help-block" }, "rememberMe":{ "validate":function (attribute, value, messages) { yii.validation.boolean(value, messages, { "trueValue":"1","falseValue":"0","message":"Remember Me must be either \"1\" or \"0\".","skipOnEmpty":1}); }, "id":"loginform-rememberme", "name":"rememberMe","validateOnChange":true, "validateOnType":false, "validationDelay":200, "container":".field-loginform-rememberme", "input":"#loginform-rememberme", "error":".help-block"} }, { "errorSummary":".error-summary", "validateOnSubmit":true, "errorCssClass":"has-error", "successCssClass":"has-success", "validatingCssClass":"validating", "ajaxParam":"ajax", "ajaxDataType":"json" }); });
4. Andere Methoden: errorSummary,validate,validateMultiple
public function errorSummary($models, $options = [])
Es fasst hauptsächlich alle Fehlerinformationen im Modell in einem Div zusammen.
public static function validate($model, $attributes = null) public static function validateMultiple($models, $attributes = null)
Diese beiden Methoden zum Erhalten von Fehlerinformationen sind relativ einfach und ich werde nicht auf Details eingehen.
3. Parameter im Formular
1. Attribute des Formulars selbst
$action: Legen Sie die URL-Adresse der aktuellen Formularübermittlung fest. Wenn sie leer ist, ist es die aktuelle URL
$method: Übermittlungsmethode, Post oder Get, Standard ist Post
$option: Dadurch werden andere Attribute des Formulars festgelegt, z. B. die ID usw. Wenn die ID nicht festgelegt ist, wird automatisch eine automatisch erhöhte ID mit dem Präfix $autoIdPrefix generiert
//这个方法在Widget基本中 public function getId($autoGenerate = true) { if ($autoGenerate && $this->_id === null) { $this->_id = self::$autoIdPrefix . self::$counter++; } return $this->_id; }
2. Attribute, die sich auf die Eingabefelder jedes Felds im Formular beziehen
Jedes von Yii generierte Feld besteht aus 4 Teilen:
① Das äußerste Div ist der Container jedes Felds,
② Beschriftung ist die Textbeschreibung jedes Felds,
③ Eingabe ist das Eingabeelement
④ Es gibt auch ein Div für Fehlermeldungen.
<div class="form-group field-loginform-username required has-error"> <label class="control-label" for="loginform-username">Username</label> <input type="text" id="loginform-username" class="form-control" name="LoginForm[username]"> <div class="help-block">Username cannot be blank.</div> </div>
$fieldConfig: Dies ist das Attribut, das durch die einheitlichen Konfigurationsinformationen aller Felder festgelegt wird. Das heißt, hier können die Attribute im Feld Klasse gesetzt werden.
public function field($model, $attribute, $options = []) { //使用fieldConfig和options属性来创建field //$options会覆盖统一的fieldConfig属性值,以实现每个field的自定义 return Yii::createObject(array_merge($this->fieldConfig, $options, [ 'model' => $model, 'attribute' => $attribute, 'form' => $this, ])); }
Über die Attribute der Verifizierung:
① $enableClientValidation: Ob auf der Clientseite überprüft werden soll, dh ob ein Front-End-JS-Überprüfungsskript generiert werden soll (wenn im Formular die Ajax-Überprüfung festgelegt ist, wird dieses JS-Skript ebenfalls generiert).
② $enableAjaxValidation: Ob es sich um eine Ajax-Verifizierung handelt
③ $validateOnChange: Validieren, wenn das Eingabefeld den Fokus verliert und sich der Wert ändert
④ $validateOnType: Validieren während der Eingabe von
⑤ $validationDelay: Validierungsverzögerungszeit, Einheit ist Millisekunden
Diese fünf Attribute können beim Erstellen jedes Feldes individuell festgelegt werden, da diese fünf Attribute in der Feldklasse vorhanden sind.
Über die Attribute jedes Feldcontainerstils:
$requiredCssClass: Stil der erforderlichen Elemente, Standard ist „erforderlich“
$errorCssClass: Überprüfungsfehlerstil, Standardwert ist „has-error“
$successCssClass: Überprüfen Sie den richtigen Stil. Der Standardwert ist „has-success“
$validatingCssClass: Stil während des Validierungsprozesses, der Standardwert ist „validating“
3. Ajax-Überprüfung
$validationUrl: URL für die Ajax-Verifizierung
$ajaxParam: Der get-Parameter in der URL wird verwendet, um anzugeben, dass es sich bei der aktuellen Anfrage um eine Ajax-Anfrage handelt. Der Standardwert ist „ajax“
$ajaxDataType: Von der Ajax-Anfrage zurückgegebenes Datenformat
4. Front-End-JS-Ereignisattribute
$beforeSubmit: Ereignis vor dem Absenden des Formulars. Wenn false zurückgegeben wird, wird das Formular nicht gesendet. Das Format ist:
function ($form) { ...return false to cancel submission... }
$beforeValidate: Wird ausgelöst, bevor jedes Attribut validiert wird. Das Format lautet:
function ($form, attribute, messages) { ...return false to cancel the validation... }
$afterValidate:在每个属性在验证之后触发,格式为:
function ($form, attribute, messages) { }
5、表单中的其它属性
$validateOnSubmit:提交表单的时候进行验证
$errorSummary:总的错误提示地方的样式
$attributes:这个属性比较特殊,它是在创建field的时候,在field中为这个form中的$attributes赋值的。这样可以确保通过field方法生成的输入表单都可以进行验证
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Alipay PHP ...

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...
