مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

Validation یا اعتبارسنجی در فریمورک Yii


هرگز نباید به داده های ارسال شده از سوی کاربران اعتماد کنید. برای اعتبارسنجی یک مدل با ورودی های کاربر، شما باید متد yii\base\Model::validate()  را فراخوانی کنید. اگر اعتبار سنجی موفقیت آمیز باشد، یک مقدارBoolean بازگردانده می شود. اگر در حین اعتبارسنجی، خطایی رخ دهد، می توانید آن خطا را از property با نام yii\base\Model::$errors استخراج کنید.

استفاده از قوانین یا Rule ها

برای اینکه بتوانید از تابع  validate()استفاده کنید، باید متد yii\base\Model::rules() را override کنید.

مرحله 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', ...
]

برای هر rule، باید تعریف کنید کدام attribute از rule اعمال می شود و کدام نوع از rule استفاده شود.

قوانین اصلی اعتبار سنجی بدین قرار هستند :

boolean, captcha, compare, date, default, double, each, email, exist, file, filter, image, ip, in, integer, match, number, required, safe, string, trim, unique, url

مرحله 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'],
         ];
      }
   }
?>

ما یک مدل برای فرم ثبت نام تعریف نمودیم. این مدل شش property دارد: username, password, email, country, city, phone. همه آنها مورد نیاز هستند و آدرسemail  باید یک آدرس معتبر باشد.

 

مرحله 3 - متد actionRegistration را به SiteController اضافه کنید، یک مدل به نام RegistrationForm ایجاد کنید و آنرا به یک view پاس دهید.

public function actionRegistration() {
   $model = new RegistrationForm();
   return $this->render('registration', ['model' => $model]);
}

مرحله 4 - یک view برای فرم ثبت نام ایجاد کنید، بدین شکل که درون پوشه views/site، یک فایل به نام registration.php با کد زیر اضافه کنید.

<?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  برای نمایش فرم ثبت نام استفاده می کنیم.

 

مرحله 5 - اگر در لوکال هاست به آدرس http://localhost:8080/index.php?r=site/registration بروید و روی دکمه submit کلیک کنید، می توانید قوانین اعتبارسنجی را مشاهده نمایید.

مرحله 6 - برای سفارشی کردن پیام خطای property با نام 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'],
   ];
}

مرحله 7 – در لوکال هاست به آدرس http://localhost:8080/index.php?r=site/registration بروید و روی دکمه submit  کلیک کنید. همانطور که مشاهده می کنید پیام خطای پروپرتی username تغییر کرده است.

مرحله 8 - برای سفارشی کردن پروسه validation یا اعتبارسنجی، می توانید این متدها را override کنید.

  • yii\base\Model::beforeValidate(): triggers a

    yii\base\Model::EVENT_BEFORE_VALIDATE event.

  • yii\base\Model::afterValidate(): triggers a

    yii\base\Model::EVENT_AFTER_VALIDATE event.

مرحله 9 - برای حذف کاراکترهای space که در اطراف پروپرتی country قرار دارند و برای تبدیل ورودی خالی پروپرتی city به مقدار null، به ترتیب از validatorهای 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'],
   ];
}

مرحله 10 - اگر یک ورودی خالی باشد، می توانید یک مقدار پیش فرض برای آن تنظیم کنید.

public function rules() {
   return [
      ['city', 'default', 'value' => 'Paris'],
   ];
}

اگر پروپرتی city خالی باشد، مقدار پیش فرض «paris» مورد استفاده قرار خواهد گرفت.

فصلِ: 14 , تعداد قسمت ها: 188 , سطح: صفر تا صد

این فصل در یک نگاه:

سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…
فصلِ: 8 , تعداد قسمت ها: 77 , سطح: صفر تا صد

این فصل در یک نگاه:

  پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید