راکت
علیرضا
علیرضا
توسط علیرضا مطرح شد
حل
8 پاسخ

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

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


ثبت پرسش جدید
علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
1

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


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
1

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

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

علیرضا
علیرضا
تخصص :فرانت اند وب
@sep287 سال پیشمطرح شد
0

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


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
1

@paressep28
درود

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

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

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

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

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


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


علیرضا
علیرضا
تخصص :فرانت اند وب
@sep287 سال پیشمطرح شد
0

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


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
1

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


علیرضا
علیرضا
تخصص :فرانت اند وب
@sep287 سال پیشمطرح شد
0

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

}


علیرضا
علیرضا
تخصص :فرانت اند وب
@sep287 سال پیشمطرح شد
0

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

}


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
0

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

<?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");
    }
}

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

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