Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Schritte zum Senden eines Formulars in Form eines Arrays mithilfe des YII-Framework-Formularmodells

Detaillierte Erläuterung der Schritte zum Senden eines Formulars in Form eines Arrays mithilfe des YII-Framework-Formularmodells

php中世界最好的语言
php中世界最好的语言Original
2018-05-21 10:00:361134Durchsuche

Dieses Mal erkläre ich Ihnen ausführlich die Schritte zum Senden eines Formulars in Form eines Arrays mit dem yii-Framework-Formularmodell. Was sind die Vorsichtsmaßnahmen zum Senden eines Formulars mit dem yii-Framework-Formular? Schauen wir uns das einmal in einem praktischen Fall an.

Gemäß der Beschreibung in der Yii-Dokumentation ist der allgemeine Prozess der Yii-Verarbeitung eines Formulars wie folgt:
Erstellen Sie die Modellklasse, die dem Formular entspricht, legen Sie die Feldvalidierung fest. Regeln
Erstellen Sie eine Aktion, die der Formularübermittlung entspricht, und verarbeiten Sie den übermittelten Inhalt
Erstellen Sie das Formular in der Ansicht
In einem kleinen Projekt wollte ich gerade Ajax verwenden Um die Formularinformationen zu übermitteln und zu überprüfen und zu speichern, wollte ich jedoch keinen versteckten Iframe für die Übermittlung ohne Aktualisierung verwenden, und die Überprüfungsmethode der Modellklasse kann in der Aktion verwendet werden, also habe ich über die Verwendung eines Formulars nachgedacht Array zum Senden.
Beispiel, Formularcode:

<form action=&#39;&#39; method=&#39;post&#39; name=&#39;form_test&#39;>
    <input type=&#39;text&#39; name=&#39;arr[]&#39; value=&#39;1&#39;>
    <input type=&#39;text&#39; name=&#39;arr[]&#39; value=&#39;2&#39;>
    <input type=&#39;text&#39; name=&#39;arr[]&#39; value=&#39;3&#39;>
</form>

Nach der Übermittlung können Sie $_POST['arr'] direkt verwenden, um die übermittelten Daten abzurufen. $_POST['arr'] lautet:

Array
(
    [0] => a
    [1] => b
    [2] => c
)

Ebenso gilt, wenn Sie zum Einreichen das folgende Formular nutzen:

<form action=&#39;&#39; method=&#39;post&#39; name=&#39;form_test&#39;>
    <input type=&#39;text&#39; name=&#39;arr[3]&#39; value=&#39;a&#39;>
    <input type=&#39;text&#39; name=&#39;arr[6]&#39; value=&#39;b&#39;>
    <input type=&#39;text&#39; name=&#39;arr[8]&#39; value=&#39;c&#39;>
</form>
$_POST[&#39;arr&#39;]
Array
(
    [3] => a
    [6] => b
    [8] => c
)

Natürlich können Sie auch ein zweidimensionales Array einreichen:

<form action=&#39;http://127.0.0.1/zhaobolu/test.php&#39; method=&#39;post&#39; name=&#39;form_test&#39;>    <input type=&#39;text&#39; name=&#39;arr[][name1]&#39; value=&#39;a&#39;>    <input type=&#39;text&#39; name=&#39;arr[][name2]&#39; value=&#39;b&#39;>    <input type=&#39;text&#39; name=&#39;arr[][name3]&#39; value=&#39;c&#39;></form>
$_POST[&#39;arr&#39;] 为:Array(    [0] => Array        (            [name1] => a        )    [1] => Array        (            [name2] => b        )    [2] => Array        (            [name3] => c        ))

Hier liegt ein Problem vor. Wenn Sie den Schlüssel des ersten Unterarrays nicht festlegen, wird beim Generieren des Arrays jeder Wert nacheinander zu arr hinzugefügt. Wenn Sie die Informationen in einem Array speichern möchten, fügen Sie einfach einen hinzu Schlüsselwert wie folgt:

<form action=&#39;http://127.0.0.1/zhaobolu/test.php&#39; method=&#39;post&#39; name=&#39;form_test&#39;>    <input type=&#39;text&#39; name=&#39;arr[a][name1]&#39; value=&#39;a1&#39;>    <input type=&#39;text&#39; name=&#39;arr[a][value1]&#39; value=&#39;a2&#39;>    <input type=&#39;text&#39; name=&#39;arr[b][name2]&#39; value=&#39;b1&#39;>    <input type=&#39;text&#39; name=&#39;arr[b][value2]&#39; value=&#39;b2&#39;></form> 
$_POST[&#39;arr&#39;] 为:Array(    [a] => Array        (            [name1] => a1            [value1] => a2        )    [b] => Array        (            [name2] => b1            [value2] => b2        ))

Verwenden Sie Ajax zum Senden eines Formulars und verwenden Sie das YII-FormularModellüberprüfungBeispiel: Zuerst ist der Modellklassenteil, nur die einfachste Überprüfungsmethode:

<?php
class LandingForm extends CFormModel
{
    public $landing_title;
    public $landing_content;
    public $landing_position;
    public function rules()
    {
        return array(
            array(&#39;landing_title, landing_content&#39;, &#39;required&#39;),
            array(&#39;landing_position&#39;, &#39;default&#39;, &#39;value&#39;=>&#39;&#39;),
        );
    }
}

Modellklasse Beim Festlegen der Parameterüberprüfungsmethode müssen Sie Regeln für jeden öffentlichen Parameter festlegen, nachdem Sie dem Modell Werte mithilfe des Formularwerts in $ zugewiesen haben _POST, die Parameterwerte ohne festgelegte Regeln sind leer
Rufen Sie die vom Formular in der Aktion übermittelten Parameter ab und überprüfen Sie sie:

$model = new LandingForm;
$model->attributes = $_POST[&#39;form&#39;];
if($model->validate()){
    $info = $model->attributes;
    ... 
}

Zum Schluss der Code für die Front-End-Übermittlung Formularteil mit jquery:

var info = new Object();
info = { &#39;form[landing_title]&#39;: landing_title,
        &#39;form[landing_content]&#39;: landing_content,
        &#39;form[landing_position]&#39;: landing_position,
        };
var url = "...";
$.post(url, info, function(rst){
    ... 
});

Ich glaube, Sie haben diesen Artikel gelesen. Sie beherrschen die Fallmethode. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Detaillierte Erläuterung der Schritte zum Erstellen geplanter Aufgaben über Konsolenbefehle im yii-Framework

Konfiguration und Verwendungsschritte des PHP-Beschleunigers eAccelerator Ausführliche Erklärung

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte zum Senden eines Formulars in Form eines Arrays mithilfe des YII-Framework-Formularmodells. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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