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

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

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


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

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


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

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

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

علیرضا
تخصص : فرانت اند وب
@sep28 5 سال پیش آپدیت شد
0

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


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

@paressep28
درود

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

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

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

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

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


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


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

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


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

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


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

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

}


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

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

}


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
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");
    }
}

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

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