yii2 behaviors


(Mr Rezaee121) #1

سلام

کسی میتونه به طور کلی در مورد سه موضوع

Blameable Behaviors

Timestamp Behavior

و

Sluggable Behavior

یه توضیحی بده و بگه هر کدوم به چه دردی میخورن؟

راستش تعریف هاشونُ که مطالعه کردم متوجه نشدم

با تشکر.


(Nima Naraghi7) #2

[size="4"][right]خیلی سادست اصلا فکر نکن چیز پیچیده ایست.

شما فرض کن یک سایت خبری داری و میخوای کارمندی که یک خبر را مینویسد معلوم باشد، همچنین میخوای کارمندی که یک خبری که قبلا نوشته شده است را ویرایش میکند هم معلوم باشد. برای اینکار شما یک جدول مثل جدول زیر در دیتابیس درست میکنی

[NEWS]

id , title , created_by , updated_by

شما میتونی خودت یه کد بنویسی که هر دفعه وقتی یه نفر خبری را میسازه یا ویرایش میکنه آی دی اون نفر در ستونهای

created_by

و

updated_by

ذخیره بشه

از اونجایی که این نیاز برای خیلی جاها پیش میاد به جای اینکه شما هر دفعه بیای این کد را بنویسی میای

blameable behavior

را به مدلت (که در اینجا "خبر" است ) اضافه میکنی تا دقیقا همینکارو بکنه یعنی میاد این دوتا ستون را با آی دی کاربر سازنده یا ویرایشگر پر میکنه همین!

timestamp behavior

هم دقیقا همیکارو برای ستونهای زمان انجام میده یعنی فرض شما میخوای زمانی که یک خبر ساخته میشه یا زمانی که کسی یک خبر موجود را ویرایش میکند ثبت بشود دو ستون به جدولت اضافه میکنی

[NEWS]

id , title , created_by , updated_by, created_at , updated_at

و بجای اینکه هر دفه خودت برای اینکار کد بنویسی

timestamp behavior

را به مدلت اضافه میکنی تا اینکار برات انجام بده

slug

یکم کارش پیشرفته تره و برای خوشگل کردن

URL

بکار میره.

یعنی میخوای برای یک خبر به جای آدرس

"http://www.mynews.com/news/id/89893"

داشته باشی

"http://www.mynews.com/news/iran-attacks-israel"

برای اینکار به صرفه نیست که یک ستون اضافه کنی بلکه فقط کافیه یک

attribute

بنام

slug

به مدلت اضافه کنی و با اضافه کردن

sluggable behavior

هر بار که مدل را لود کنی

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

ولی اینکه چطوری آدرس خوشگل بسازی خودش بحثی است دراز و طولانی

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

created_at

باشه

sakhte_shode_dar_tarikh

با یکم تنظیم میتونی اینو به

Timestamp Behavior

بفهمونی

[/right][/size]


(Mr Rezaee121) #3

بسیار ممنونم.


(Nk Hesam+Yii) #4

عجب خبری هم مثال زدی :D :D


(Nima Naraghi7) #5

;D

;)