PDA

View Full Version : حرفه ای: سوال در مورد ساختار mvc



bluetooth153
سه شنبه 22 بهمن 1392, 21:29 عصر
با سلام خدمت دوستان
من یه مدت کوتاه که برنامه نویسی mvc رو شروع کردم و یک پروژه cms شخصی رو دارم با ساختار سه لایه mvc دارم مینویسم الان سوال دارم :
ببینید من الان مثلا برای قسمت نوشتن پست جدید تو پنل مدیریت سی ام اس به مشکل خوردم و خواستم راهنمایی کنید
طبق چیزهایی که من یاد گرفتم هر کنترلر میتونه تعدادی اکشن داشته باشه و اکشن ها معادل متد های کلاس کنترلر هستن . و اینکه هر اکشن هم مدل و ویو (view) خودشو داره .
خب اگه این مطالبی که عرض کردم درست باشه من مشکلی که دارم اینه که من بخش ارسال پست جدید و ویرایش یک پست تقریبا ساختار یکسانی داره در پروژه هایی که به صورت معمولی انجام میدادم این طور کار میکردم :
برای ایجاد پست جدید :


localhost/projectname/index.php?do=post

و برای ویرایش یک پست هم به این صورت :


localhost/projectname/index.php?do=post&id=20

تو پی اچ پی شرط میزاشتم اگه $_GET['id'] ست نشده بود بره قسمت فرم نوشتن پست و در صورتی که ست شده بود اون پست (مثلا پست با آی دی 20) رو از بانک بگیره و در قسمت های مورد نظر چاپ کنه تا اگه کاربر خواست اون رو ویرایش کنه .
یعنی من فقط یک فرم html طراحی کرده بودم و با پی اچ پی شرط های لازم رو میزاشتم.
ولی با mvc من نتونستم درک کنم که باید چیکار کنم . طبق چیزی که بالا گفتم میشه یک اکشن برای newpost و یک اکشن هم برای editpost بزاریم ولی چون هر اکشن باید view جداگانه ای داشته باشه این کار باعث افزونگی کد ها میشه و اصل برنامه نویسی شی گرا رو نقض میکنه!
خواهش میکنم کمک کنید که خیلی کارم گیره و شدیدا کلافه شدم . ممنون میشم خدانگهدار

sadegh1362
سه شنبه 22 بهمن 1392, 22:04 عصر
سلام
در مورد اینکه می گید باعث افزونگی میشه . اگر mvc درست پیاده سازی شده باشه . شما به راحتی باید بتونید . در یک action این شرط ها رو چک کنید و هر دو صفحه ای که میگید رو فراخونی کنید ازview .
شما باید 2 تا view داشته باشید که در یک action در controller فراخونی شدن. اما یکی باشرط اول فراخونی میشه . دومی در صورتی که اولی نشد اجرا بشه . (یعنی هردو در یک action)

و با نوشتن سه چها خط باید این کار رو انجام بدین و در ادامه کدهای html در view رو ویرایش کنید .

در ضمن برای پیاده سازی mvc یک cd آموزشی هست که توسط ایران نهاد تهیه شده و داره برای ارائه معرفی میشه . و به زودی خبر ارائش توسط ایران نهاد منتشر می شه.
پیگیر باشید برای پیاده سازی یک mvc استاندارد هستش و تمامی این مشکلات در این آموزش بر طرف می شه . در مورد mvc

bluetooth153
سه شنبه 22 بهمن 1392, 22:16 عصر
این موضوع اکشن و شرط گذاری رو فهمیدم ولی اینی ک گفتید دو تا view داشته باشیم بازم به نظرتون باعث افزایش کد های بی جهت نمیشه؟ میشه یک مثال بزنید؟ اگه این کارو بکنید ک خیلی ممنون میشم.

rezaonline.net
سه شنبه 22 بهمن 1392, 23:25 عصر
ده تا ویو هم داشته باشید در هر درخواست یکی اش استفاده میشه و افزایش کد بی جهت نیست .
MVC شما متاسفانه فقط یک روتر هست .
باید کمی توسعه پذیرتر اقدام کنید.
به نظر بنده ساختار یک فریم ورک رو بررسی کنید .

sadegh1362
چهارشنبه 23 بهمن 1392, 00:04 صبح
منظور از دوتا view اینه که باید دوتا فایل view داشته باشید . و هر view برای انجام یکی از کارهایی که می خواید انجام بدین . و کنترلر شما یاید بتونه در زمانی که شرط اول برقرار شد view1 و وقتی شرط دوم بر قرار شد view2 رو فراخونی کنه .
نه باعث افزایش نمی شه . همونطور که جناب rezaonline.net (http://barnamenevis.org/member.php?230839-rezaonline.net) گفتن هر بار فقط یک view فراخونی می شه . و شما افزونگی ندارید اصلا. اتفاقا این باعث میشه که کدهای شما کاملا تفکیک می شن و بای اجرا فقط اون کدی که لازمه فعال و اجرا می شه.

bluetooth153
چهارشنبه 23 بهمن 1392, 00:11 صبح
ممنون از شما
منظور من از افزونگی این بود که دو بار فرم پست رو داریم و در صورتی که بخوایم تغییری توی ساختار کدهای html فرم ایجاد کنیم باید دو بار این عمل انجام بشه نه اینکه هر دو با هم در خروجی چاپ میشن
فکر میکنم متوجه شدم از توضیحاتتون ممنونم