Maison  >  Article  >  développement back-end  >  Explication détaillée des étapes pour soumettre un formulaire sous la forme d'un tableau en utilisant le modèle de formulaire du framework yii

Explication détaillée des étapes pour soumettre un formulaire sous la forme d'un tableau en utilisant le modèle de formulaire du framework yii

php中世界最好的语言
php中世界最好的语言original
2018-05-21 10:00:361194parcourir

Cette fois, je vous apporte une explication détaillée des étapes de soumission d'un formulaire sous forme de tableau avec le modèle de formulaire du framework yii. Quelles sont les précautions pour soumettre un formulaire avec le formulaire du framework yii. modèle sous la forme d'un tableau. Voici un cas pratique. Jetons un coup d'oeil.

Selon la description dans la documentation Yii, le processus général de traitement d'un formulaire par Yii est :
Créer la classe modèle correspondant au formulaire, définir le champvalidation règles
Créer une action correspondant à la soumission du formulaire et traiter le contenu soumis
Créer le formulaire dans la vue
Dans un petit projet tout à l'heure, je voulais utiliser ajax pour soumettre les informations du formulaire, les vérifier et les enregistrer, mais je ne voulais pas utiliser une iframe cachée pour une soumission sans actualisation, et la méthode de vérification de la classe modèle peut être utilisée dans l'action, j'ai donc pensé à utiliser un formulaire tableau à soumettre.
Exemple, code du formulaire :

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

Après la soumission, vous pouvez directement utiliser $_POST['arr'] pour obtenir les données soumises, $_POST['arr'] est :

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

De même, si vous utilisez le formulaire suivant pour soumettre :

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

Bien sûr, vous pouvez également soumettre un tableau bidimensionnel:

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

Il y a un problème ici. Si vous ne définissez pas la clé du premier sous-tableau, chaque valeur sera ajoutée à l'arr séquentiellement lors de la génération du tableau. informations dans un tableau, ajoutez simplement une valeur clé, comme suit :

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

Un exemple d'utilisation d'ajax pour soumettre un formulaire et d'utilisation du formulaire yiivérification du modèle. La première est la partie classe de modèle, qui n'a que la méthode de vérification la plus simple :

<?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;),
        );
    }
}

Lors de la définition de la méthode de vérification des paramètres, la classe de modèle doit définir des règles pour chaque paramètre public s'il existe des paramètres. pour lesquels les règles ne sont pas définies, utilisez la valeur du formulaire dans $_POST pour attribuer des valeurs au modèle. Après cela, la valeur du paramètre sans définir la règle sera vide
Obtenez les paramètres soumis par le formulaire dans l'action et. vérifiez :

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

Enfin, le code de la partie formulaire de soumission frontale, en utilisant 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){
    ... 
});

Je crois que vous maîtrisez la méthode après en lisant le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Explication détaillée des étapes pour créer des tâches planifiées via les commandes de la console dans le framework yii

Configuration et étapes d'utilisation de l'accélérateur PHP eAccelerator Explication détaillée

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn