13-05-1395، 12:05 ب.ظ
خود مدل یعنی yiibasemodel رویدادهای beforeValidate و afterValidate داره فقط ولی اکتیورکورد علاوه بر اونها، این رویدادها رو هم داره:
ترتیب و اینکه کدوم یکی از اینها فراخوانی بشن بستگی به نحوه استفاده شما از مدل داره. برای مثال توی این کد:
فقط رویدادهای beforeSave و afterSave اتفاق میفته. اما توی کد زیر:
به ترتیب این رویدادها اتفاق میفتن:
- رویداد afterDelete (بعد از حذف مدل اتفاق میفته)
- رویداد afterFind (بعد از پیدا کردن مدل با هر روشی مثل find و findAll و... اتفاق میفته)
- رویداد afterRefresh (بعد از فراخوانی متد refresh روی مدل اتفاق میفته که دوباره مدل رو از دیتابیس میخونه)
- رویداد afterSave (بعد از ذخیرهکردن مدل اتفاق میفته)
- رویداد afterValidate (بعد از اعتبارسنجی اتفاق میفته)
- رویداد beforeDelete (موقع فراخوانی متد delete و قبل از حذف واقعی مدل اتفاق میفته - مثلاً میتونید رکوردهای وابسته رو داخلش حذف کنید یا به دسته دیگری منتقل کنید.
- رویداد beforeSave (قبل از ذخیرهکردن مدل اتفاق میفته)
- رویداد beforeValidate (قبل از اعتبارسنجی اتفاق میفته)
ترتیب و اینکه کدوم یکی از اینها فراخوانی بشن بستگی به نحوه استفاده شما از مدل داره. برای مثال توی این کد:
$model = new Users; $model->name = 'Ali'; $model->save(false);
فقط رویدادهای beforeSave و afterSave اتفاق میفته. اما توی کد زیر:
$model = Users::findOne(5); $model->name = 'Ali'; $model->updateCounters(['visit' => 1]); $model->save(); $model->refresh();
به ترتیب این رویدادها اتفاق میفتن:
نقل قول:
afterFind
beforeValidate
afterValidate
beforeSave
afterSave
afterRefresh