PDA

View Full Version : حرفه ای: نمایش توابع در MVC



n0o0b_sina
یک شنبه 19 بهمن 1393, 16:26 عصر
سلام
دوستان نمیدونم عنوان مناسبی انتخاب کردم یا نه به هر حال ببخشید.
سوالم راجب استاندارد های کدنویسی توی MVC هست مثلا من برای نمایش دسته بندی های تو در تو این کارو کردم به نظرتون درسته یا بهتر از اینم هم میشه:
من اول یک model برای دریافت دسته بندی ها از دیتابیس نوشتم که دسته بندی هارو توی یک آرایه ی تو در تو میریزه و بر میگردونه بعد توی کنترلر یه تابع نوشتم و به اون آرایه ی تو در تو استایل دادم (چون آرایه تو در توی هست و عمق آرایه ها نا معلوم حتما باید از تابع استفاده کنم) بعد اون تابع کنترلر رو توی view فراخوانی کردم و دسته بندی ها هم درست نشون داده میشن، ولی من هر چقدر فکر کردم دیدم این کار اصولی نیست چون تابعی که توی کنترلر نوشتم همون طور که میدونید از آدرس بار هم فراخوانی میشه و model ها هم برای کار با دیتابیس هست، الان من این تابع رو کجا بنویسم؟ :دی
پیشاپیش ممنون از راهنمایی دوستان

Mohammadsgh
یک شنبه 19 بهمن 1393, 21:28 عصر
تابع رو تو مدل بنویسید.کارهای پایگاه داده و اینها تو مدله.اگر هم تو پیاده سازی مشکل دارید بگید راهنماییتون کنم

n0o0b_sina
یک شنبه 19 بهمن 1393, 21:43 عصر
تابع رو تو مدل بنویسید.کارهای پایگاه داده و اینها تو مدله.اگر هم تو پیاده سازی مشکل دارید بگید راهنماییتون کنم
نه فقط میخواستم ببینم بهترین جا برای نوشتنش کجاست، کارهای مربوط به پایگاه داده رو توی models نوشتم گفتم این که ربطی به پایگاه داده نداره بهتره کجا نوشته بشه.
پس model بهترین جاست؟! از این تابع که به آرایه استایل میده فقط یه جا استفاده میکنم چون صفحات دیگ استایل های دیگه ای دارند.
ممنون

MMSHFE
یک شنبه 19 بهمن 1393, 23:14 عصر
میتونید یکسری توابع توی کنترلر داشته باشین که لزوماً ازطریق آدرس قابل صدازدن نیستن. برای مثال، همه توابعی که از بیرون میشه صدا زد رو با یک پیشوند مشخص کنید (مثل actionIndex و actionView - مشابه فریمورک Yii) و اینطوری دیگه بقیه رو Dispatcher فراخوانی نمیکنه. کارهایی که مربوط به پایگاه داده ها نیست رو به مدل واگذار نکنید. اینکه از این تابع فقط یکجا استفاده میکنید هم دلیل دیگری برای مناسب بودن قرارگیریش توی کنترلری هست که بهش احتیاج داره و حتی میتونید اون رو private کنید تا مطمئن بشین امکان فراخوانی از بیرون کلاس نداره.

hamedarian2009
یک شنبه 19 بهمن 1393, 23:20 عصر
هرشخصی یه جور برداشت داره و مثلا اگه من باشم اینهارو توی کنترلر انجام میدم و مدل فقط کار با دیتابیس رو انجام بده فکر هم مبکنم بیشتر افراد همین کارو میکنن

n0o0b_sina
دوشنبه 20 بهمن 1393, 00:24 صبح
میتونید یکسری توابع توی کنترلر داشته باشین که لزوماً ازطریق آدرس قابل صدازدن نیستن. برای مثال، همه توابعی که از بیرون میشه صدا زد رو با یک پیشوند مشخص کنید (مثل actionIndex و actionView - مشابه فریمورک Yii) و اینطوری دیگه بقیه رو Dispatcher فراخوانی نمیکنه. کارهایی که مربوط به پایگاه داده ها نیست رو به مدل واگذار نکنید. اینکه از این تابع فقط یکجا استفاده میکنید هم دلیل دیگری برای مناسب بودن قرارگیریش توی کنترلری هست که بهش احتیاج داره و حتی میتونید اون رو private کنید تا مطمئن بشین امکان فراخوانی از بیرون کلاس نداره.
من هم اینجوری فکر کردم و از model برداشتم همرو چون فقط کارش استایل دهی هست و توی هر صفحه متفاوت!
ممنون