راکت
حل شده

آیا در این روش ساختار mvc رعایت شده

8 پاسخ

سلام وقتی کاربر وارد صفحه ی هسته (index) میشه طبق(آدرس سایت) controller مربوط بر هر صفحه اینکلود میشه .
خب من برای هر صفحه یک controller و فقط یک view در نظر گرفتم
و صفحه ی خانه یک controller داره و از چند model استفاده میکنه آیا این روش درست است ؟بنظرتون من حساسیت زیادی روش خرج بدم یا نه؟

ثبت پرسش جدید

پاسخ‌ها

8
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بهترین پاسخ

هر کدوم از متدها یه view رو برمی‌گردونه. و هر تعداد Model که لازم داشتید، داخل کنترلر use می‌کنید و استفاده میکنید

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

  • می‌تونید یه PagesController داشته باشید با متدهای index, about, contact و ...
  • و هر کدوم از این متدها view خودش رو داشته باشه.
  • و بر حسب نیاز مدل‌هایی که ممکنه بهشون نیاز داشته باشی رو به کنترلر اضافه می‌کنید.
علیرضا
علیرضا
@sep28

تخصص: فرانت اند وب

خب این روشی که من گفتم میتونه درست باشه؟@ali.bayat
میشه درمورد روش خودتون یکمی توضیح بدین؟واگر تصویر در مورد این ساختار بدین خیلی خوب میشه

شاید پاسخ شما همین‌جا باشد

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

@paressep28
درود

جدا از بحث درستی، یه سری کانوِنشن (روش‌های معمول بین برنامه نویسا) هست که سعی میشه رعایت بشه.

در روش شما، سناریویی رو فرض کنید که شما ۱۰ تا صفحه دارید و برای هر کدوم یه کنترلر ساختید که تنها متد در هر کدوم تنها یک load یا view هست. در این حالت بهتره شما ۱۰ تا متد داخل یه کلاس (کنترلر) داشته باشید تا ۱۰ تا کنترلر .

اما مواردی هم وجود دارند که شما عملا احتیاج دارید کنترلرهاتون مجزا بشند. فرض کنید یه کنترلر به نام PostController دارید و می‌خواهید قابلیت لایک شدن رو به هر پست اضافه کنید. در این سناریو چند گزینه دارید:

  • میشه یه متد به نام like در کنترلر PostController ایجاد کرد و کدهاتون رو اون‌جا بگذارید
  • میشه یه کنترلر جدید مثلا LikePostController ایجاد کرد و در متد create کدهارو اعمال کرد
  • حتی میشه یه متد Like در مدل Post ایجاد کرد و منطق لایک کردن رو اونجا قرار داد

هر ۳ روشی که گفته شد، درست هستند.. و بر اساس نیاز‌ها، حجم و شرایط پروژه، در جاهای خاص کاربرد خودشون رو دارند.


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

علیرضا
علیرضا
@sep28

تخصص: فرانت اند وب

خیلی ممنونم از شما @ali.bayat واگه ۱۰ متد داشه باشیم چطوری میشه سوئیچ کرد بین view و model ها شاید یک صفحه به چندmodel نیاز داشته باشه؟و model ها از هم جدا باشه

علیرضا
علیرضا
@sep28

تخصص: فرانت اند وب

@ali.bayat
خیلی سپاسگذارم در کل جوابگو گرفتم آیا منظور شما این بود؟
وثتی در pagecontroller متد مورد نیاز ما صدا زده میشه اینجوریه؟
function index(){
include_once 'view.php';
//----------------------------
include_once 'model_1';
include_once 'model_2';

}

علیرضا
علیرضا
@sep28

تخصص: فرانت اند وب

@ali.bayat
خیلی سپاسگذارم در کل جوابگو گرفتم آیا منظور شما این بود؟
وثتی در pagecontroller متد مورد نیاز ما صدا زده میشه اینجوریه؟
function index(){
include_once 'view.php';
//----------------------------
include_once 'model_1';
include_once 'model_2';

}

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

در واقع به شکل زیره:

<?php

namespace App\Http\Controllers;

use App\Model1;
use App\Model2;
use App\Model3;
....

class PagesController extends Controller
{
    public function about() {

        return view("pages/about");
    }
}

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام