यि - मान्यता
आपको कभी भी उपयोगकर्ताओं से प्राप्त डेटा पर भरोसा नहीं करना चाहिए। उपयोगकर्ता इनपुट के साथ एक मॉडल को मान्य करने के लिए, आपको कॉल करना चाहिएyii\base\Model::validate()तरीका। यदि मान्यता सफल हो जाती है तो यह बूलियन मान लौटाता है। यदि त्रुटियां हैं, तो आप उनसे प्राप्त कर सकते हैंyii\base\Model::$errors संपत्ति।
नियमों का उपयोग करना
बनाने के लिए validate() कार्य कार्य, आपको ओवरराइड करना चाहिए yii\base\Model::rules() तरीका।
Step 1 - rules() विधि निम्न प्रारूप में एक सरणी देता है।
[
// required, specifies which attributes should be validated
['attr1', 'attr2', ...],
// required, specifies the type a rule.
'type_of_rule',
// optional, defines in which scenario(s) this rule should be applied
'on' => ['scenario1', 'scenario2', ...],
// optional, defines additional configurations
'property' => 'value', ...
]
प्रत्येक नियम के लिए, आपको कम से कम परिभाषित करना चाहिए कि कौन सा नियम लागू होता है और किस प्रकार का नियम लागू होता है।
मुख्य सत्यापन नियम हैं - boolean, captcha, compare, date, default, double, each, email, exist, file, filter, image, ip, in, integer, match, number, required, safe, string, trim, unique, url.
Step 2 - में एक नया मॉडल बनाएँ models फ़ोल्डर।
<?php
namespace app\models;
use Yii;
use yii\base\Model;
class RegistrationForm extends Model {
public $username;
public $password; public $email;
public $country; public $city;
public $phone;
public function rules() {
return [
// the username, password, email, country, city, and phone attributes are
//required
[['username' ,'password', 'email', 'country', 'city', 'phone'], 'required'],
// the email attribute should be a valid email address
['email', 'email'],
];
}
}
?>
हमने पंजीकरण फॉर्म के लिए मॉडल घोषित किया है। मॉडल में पाँच गुण हैं - उपयोगकर्ता नाम, पासवर्ड, ईमेल, देश, शहर और फ़ोन। वे सभी आवश्यक हैं और ईमेल संपत्ति का एक मान्य ईमेल पता होना चाहिए।
Step 3 - जोड़ें actionRegistration करने की विधि SiteController जहाँ हम एक नया निर्माण करते हैं RegistrationForm मॉडल करें और इसे एक दृश्य में पास करें।
public function actionRegistration() {
$model = new RegistrationForm();
return $this->render('registration', ['model' => $model]);
}
Step 4- हमारे पंजीकरण फॉर्म के लिए एक दृश्य जोड़ें। विचारों / साइट फ़ोल्डर के अंदर, एक फ़ाइल बनाएँ, जिसका नाम पंजीकरण है। निम्नलिखित कोड के साथ।
<?php
use yii\bootstrap\ActiveForm;
use yii\bootstrap\Html;
?>
<div class = "row">
<div class = "col-lg-5">
<?php $form = ActiveForm::begin(['id' => 'registration-form']); ?> <?= $form->field($model, 'username') ?> <?= $form->field($model, 'password')->passwordInput() ?> <?= $form->field($model, 'email')->input('email') ?> <?= $form->field($model, 'country') ?> <?= $form->field($model, 'city') ?> <?= $form->field($model, 'phone') ?>
<div class = "form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary',
'name' => 'registration-button']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
हम उपयोग कर रहे हैं ActiveForm हमारे पंजीकरण फॉर्म को प्रदर्शित करने के लिए विजेट।
Step 5 - अगर आप लोकल होस्ट के पास जाते हैं http://localhost:8080/index.php?r=site/registration और सबमिट बटन पर क्लिक करें, आपको कार्रवाई में सत्यापन नियम दिखाई देंगे।
Step 6 - के लिए त्रुटि संदेश को अनुकूलित करने के लिए username संपत्ति, संशोधित करें rules() की विधि RegistrationForm इस अनुसार।
public function rules() {
return [
// the username, password, email, country, city, and phone attributes are required
[['password', 'email', 'country', 'city', 'phone'], 'required'],
['username', 'required', 'message' => 'Username is required'],
// the email attribute should be a valid email address
['email', 'email'],
];
}
Step 7 - स्थानीय होस्ट के पास जाएं http://localhost:8080/index.php?r=site/registrationऔर सबमिट बटन पर क्लिक करें। आप देखेंगे कि उपयोगकर्ता नाम संपत्ति का त्रुटि संदेश बदल गया है।
Step 8 - सत्यापन प्रक्रिया को अनुकूलित करने के लिए, आप इन विधियों को ओवरराइड कर सकते हैं।
yii \ base \ Model :: इससे पहले अमान्य (): ट्रिगर ए
yii \ base \ Model :: EVENT_BEFORE_VALIDATE ईवेंट।
yii \ base \ Model :: afterValidate (): चलाता है a
yii \ base \ Model :: EVENT_AFTER_VALIDATE ईवेंट।
Step 9 - देश की संपत्ति के चारों ओर रिक्त स्थान को ट्रिम करने के लिए और शहर की संपत्ति के खाली इनपुट को शून्य में बदलने के लिए, आप हो सकते हैं trim तथा default प्रमाणकों।
public function rules() {
return [
// the username, password, email, country, city, and phone attributes are required
[['password', 'email', 'country', 'city', 'phone'], 'required'],
['username', 'required', 'message' => 'Username is required'],
['country', 'trim'], ['city', 'default'],
// the email attribute should be a valid email address
['email', 'email'],
];
}
Step 10 - यदि कोई इनपुट खाली है, तो आप उसके लिए एक डिफ़ॉल्ट मान सेट कर सकते हैं।
public function rules() {
return [
['city', 'default', 'value' => 'Paris'],
];
}
यदि शहर की संपत्ति खाली है, तो डिफ़ॉल्ट "पेरिस" मूल्य का उपयोग किया जाएगा।