تالار گفتمان nCIS.ir

نسخه‌ی کامل: جدا سازی کدهای html و php در مدل MVC
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
در مدل MVC گفته میشه که میبایست بخش کار با پایگاه داده ، استخراج اطلاعات و ... از بخش نمایش اطلاعات جدا بشه .
بعنوان مثال ما میایم در کنترلر مربوطه اطلاعات مربوط به یک جدول رو از model اون استخراج کرده و به view مربوطه جهت نمایش داده ها ارسال میکنیم .
در view با یک حلقه ی foreach اطلاعات رو نمایش میدیم .

تا اینجا تا حدی کدهای html و php جدا شدن.

اما گاهی لازمه در همین حلقه ی foreah در view یک select دیگر هم انجام بشه .
خب مسلما اینجا باید یک شی از کلاس model مربوطه ایجاد کرده و متد select اونو صدا کنیم .
پس در این view نیاز به نوشتن کد php هم هست .

آیا این کار برخلاف مدل MVC هست ؟
اگر بله ، در این مواقع باید چکار کرد ؟
چطور باید همه ی این کارها رو در کنترلر انجام داد و سپس به VIEW ارسال کرد ؟
خب خودتون گفتید دیگه داده هاتون رو به صورت متغیر به ویو ارسال کنید و اونجا استفاده کنید حالا میخاد یه سلکت باشه یا ده تا
(18-03-1394، 03:33 ب.ظ)mary نوشته: [ -> ]در مدل MVC گفته میشه که میبایست بخش کار با پایگاه داده ، استخراج اطلاعات و ... از بخش نمایش اطلاعات جدا بشه .
بعنوان مثال ما میایم در کنترلر مربوطه اطلاعات مربوط به یک جدول رو از model اون استخراج کرده و به view مربوطه جهت نمایش داده ها ارسال میکنیم .
در view با یک حلقه ی foreach  اطلاعات رو نمایش میدیم .

تا اینجا تا حدی کدهای html و php جدا شدن.

اما گاهی لازمه در همین حلقه ی foreah در view یک select دیگر هم انجام بشه .
خب مسلما اینجا باید یک شی از کلاس model مربوطه ایجاد کرده و متد select اونو صدا کنیم .
پس در این view نیاز به نوشتن کد php هم هست .

آیا این کار برخلاف مدل MVC هست ؟
اگر بله ، در این مواقع باید چکار کرد ؟
چطور باید همه ی این کارها رو در کنترلر انجام داد و سپس به VIEW ارسال کرد ؟
ببینید اینکه چون بخش ویو برای نمایشه نباید کد php زد اشتباهه.تو ویو هم میتونه html باشه و هم php و اینکه همه اون کارهایی که گفتید رو میشه تو model انجام داد
دقیقاً درست میگن. توی معماری جدید، View از یک اسکریپت ساده HTML خیلی فراتر رفته و حتی میتونه مستقیماً به مدل وصل بشه و درخواست دریافت اطلاعات کنه. منتها ثبت و ویرایش و... رو بهتره همچنان توی کنترلر انجام بدین.