YII fournit un cadre robuste pour gérer les formulaires et valider l'entrée utilisateur. Le composant central est le widget yii\widgets\ActiveForm
, qui simplifie considérablement le processus. Ce widget génère automatiquement du HTML pour vos champs de formulaire en fonction des attributs de votre modèle et de leurs règles de validation.
Illustrons avec un exemple. Supposons que vous ayez un modèle ContactForm
:
<code class="php"><?php namespace app\models; use yii\base\Model; class ContactForm extends Model { public $name; public $email; public $subject; public $body; public function rules() { return [ [['name', 'email', 'subject', 'body'], 'required'], ['email', 'email'], ]; } }</code></code>
À votre avis, vous utiliseriez ActiveForm
comme ceci:
<code class="php"><?php $form = \yii\widgets\ActiveForm::begin(); ?> = $form->field($model, 'name')->textInput() ?> = $form->field($model, 'email')->textInput() ?> = $form->field($model, 'subject')->textInput() ?> = $form->field($model, 'body')->textarea(['rows' => 6]) ?> <div class="form-group"> = Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> </div> <?php \yii\widgets\ActiveForm::end(); ?></code>
Cela génère un formulaire avec des champs d'entrée pour chaque attribut. La méthode rules()
dans le modèle définit les règles de validation. Lorsque le formulaire est soumis, $model->validate()
vérifiera l'entrée par rapport à ces règles. Les messages d'erreur sont automatiquement affichés à côté des champs respectifs en cas d'échec de la validation. Vous pouvez accéder aux données validées via $model->attributes
. N'oubliez pas de gérer la soumission du formulaire dans votre action de contrôleur.
La sécurisation des formulaires dans YII implique plusieurs étapes cruciales:
Html::encode()
de Yii est votre ami. Utilisez-le pour échapper aux caractères HTML dans toutes les données que vous affichez à partir de l'entrée utilisateur.yii\web\CsrfToken
de Yii le gère automatiquement. Assurez-vous d'utiliser yii\widgets\ActiveForm
car il inclut automatiquement la protection CSRF.safeAttributes()
dans votre modèle pour spécifier les attributs qui sont sûrs pour être attribués en masse. YII simplifie les interactions de la base de données via son activeRecord. Après avoir validé l'entrée de l'utilisateur, vous pouvez enregistrer les données dans votre base de données à l'aide de la méthode save()
d'Activerecord.
En supposant que vous avez un modèle Contact
correspondant à une table de base de données, vous pouvez le faire:
<code class="php">if ($model->load(Yii::$app->request->post()) && $model->validate()) { if ($model->save()) { // Success! Send a confirmation email, etc. } else { // Handle save errors } }</code>
Ce code charge d'abord les données soumises dans le modèle à l'aide load()
. Ensuite, il valide les données. Si la validation réussit, il tente d'enregistrer les données dans la base de données. La méthode save()
gère l'interaction de la base de données, y compris la gestion des erreurs de base de données potentielles.
La validation côté client améliore l'expérience utilisateur en fournissant des commentaires immédiats. YII s'intègre parfaitement aux frameworks JavaScript comme jQuery pour y parvenir. yii\widgets\ActiveForm
génère automatiquement le code de validation côté client en fonction des règles de votre modèle.
Vous n'avez pas besoin d'écrire beaucoup de code supplémentaire pour la validation de base côté client; ActiveForm
les gère automatiquement. Pour des scénarios plus complexes, vous pouvez personnaliser la logique de validation côté client en utilisant la méthode validate()
du widget ActiveForm
et l'intégration avec des fonctions JavaScript personnalisées. Cependant, n'oubliez pas que la validation côté client doit être considérée comme une mesure supplémentaire et jamais un remplacement pour une validation solide du côté serveur.
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!