نمایش نتایج 1 تا 14 از 14

نام تاپیک: چگونگی گرفتن method در php mvc

  1. #1

    Question چگونگی گرفتن method در php mvc

    سلام دوستان
    من با استفاده از آموزش زیر شروع به یادگیری php mvc کردم:
    http://web.itpro.ir/tutorials/12499/...8%AF%D8%B1-php
    همه چیز خوب هست. مشکل فقط اینجاست که من میخواهم به function های داخلی صفحه که در فولدر model هست دسترسی داشته باشم.
    به طور مثال من در صفحه index هستم (در فولدر view/index/index.php)؛ حالا به ازای هر صفحه در فولدر model یک فایل با نام آن و model.php_ دارم که داخل آن یکسری function هست. تو آموزش یک object از این class ساخته شده. اما در لایه view نمیتونم بهش وصل بشم. چه باید بکنم؟

  2. #2
    کاربر دائمی
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    جزیره مارماری
    پست
    1,137

    نقل قول: چگونگی گرفتن method در php mvc

    درود
    کار همه اینها با کنترلر هست.شما باید دو تا متد در کنترلر اصلی (mvc)برای کارهاتون بسازید.1-render2-loadmodel
    1-loadmodel:کارش فراخوانی مدل در کنترلر هست
    2-render:فرخوانی لایه نمایش (view) در کنترلر
    و کنترلر شما از کنترلر اصلی مشتق میشه(extends) که تو کنترلرتون میتونید از اون دو تا متد استفاده کنید
    این لینک رو ببینیدhttp://phpro.ir/mvc-%D8%AF%D8%B1-php...8%D9%85-model/
    تو اینجا تابع model همون کاری که میخواید رو میکنه.
    این لینک هم برای view
    http://phpro.ir/mvc-%D8%AF%D8%B1-php...88-controller/
    آموزش های همون لینک رو گام به گام بخونید تا متوجه بشید
    http://phpro.ir/page/2/

  3. #3

    نقل قول: چگونگی گرفتن method در php mvc

    میشه یک مثال بزنید. یعنی چطور تو لایه view بتونم استفاده کنم؟

  4. #4
    کاربر دائمی
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    جزیره مارماری
    پست
    1,137

    نقل قول: چگونگی گرفتن method در php mvc

    اگه منظورتون مدل هست اینجوری

    //controller method
    public function index() {
    $data=array(
    'getindex'=>$this->model->getindex()
    );
    $this->view->render('admin/index',$data,TRUE);
    }

    تو ویو getindex رو میشه به صورت متغییر بهش دسترسی داشت.اگه متوجه نشدید بگید توضیح بدم

  5. #5

    نقل قول: چگونگی گرفتن method در php mvc

    سلام
    ممنون از شما
    تقریباً متوجه شدم !!!
    اما چندتا مطلب:
    1- آموزشی که شما گذاشته بودید رو خوندم؛ اما وقتی با لینک آموزشی که خودم گذاشته بودم مقایسه کردم جسارتاً دیدم لینک آموزشی که من گذاشتم اصولی تر هست. البته اون آموزشی که شما گذاشته بودید رو قبلا دیده بودم اما نخونده بودم. تو آموزشی که من لینک گذاشتم همه چیز توسط controller بررسی و به view , model فرستاده میشد. اما تو آموزشی که شما گذاشته بودید تو لایه کلاس view می امد query اجرا میکرد که خودتون بهتر میدونید این query میبایست در model مربوط به صفحه انجام میشد. به هر حال ...
    2- من الان تو متد render کلاس view جایی برای متغیر $data در نظر نگرفتم. اما شما اینجا به عنوان پارامتر در متد ازش استفاده کردید. میشه یه توضیح بدید که با تو کد view تغییری ایجاد کنم یا خیر؟
    3- ببیند وقتی تو لایه view من print_r($this) رو میگیرم چنین متنی چاپ میشه:

    View Object
    (
    )

    که کاملا صحیح هست. چون در حال حاضر داخل آبجکت view هستیم. اما وقتی تو فایل bootstrap.php که loadeer فریم ورک من هست بعد از لود مدل مربوط به صفحه از متغیر $controller پرینت میگیرم به صورت زیر چاپ میشه:

    Index Object
    (
    [view] = View Object
    (
    )
    [model] = Index_model
    )

    یعنی اینکه تو آبجکت Index من مدل هست. اما تو view نمیدونم چطور میتونم بهش دسترسی داشته باشم.
    این ها رو با توجه به کدهای آموزش خودم گفتم. ممنون میشم راهنمایی کنید.

  6. #6
    کاربر دائمی
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    جزیره مارماری
    پست
    1,137

    نقل قول: چگونگی گرفتن method در php mvc

    راستشو بخواید من اون لینکی که دادم رو دقیق نخوندم و برای اینکه مشکلتون بر طرف بشه اون لینکو دادم.اگه به کلاس ویو من نگاه کنید 90% کار رو متوجه میشید تو این کلاس تابع extract میاد یک آرایه میگیره که همونdata هست و اندیس هاشو تبدیل به متغییر میکنه که تو ویو بشه استفاده کرد


    <?php
    /**
    *
    */
    class View
    {
    public function render($name,$data=array(),$show=true) {
    extract($data);

    if ($show==true) {
    require 'views/header/header.php';
    require 'views/' . $name . '.php';
    require 'views/header/sidebar.php';
    require 'views/header/footer.php';
    }elseif ($show==false) {

    require 'views/header/header_admin.php';
    require 'views/header/sidebar_admin.php';
    require 'views/' . $name . '.php';


    }

    }

    public function renderp($name,$data=array()) {
    extract($data);
    require 'views/' . $name . '.php';
    }

    }

    ?>

  7. #7

    نقل قول: چگونگی گرفتن method در php mvc

    ممنون
    بله؛ متوجه شدم. فقط یک سوالی برام پیش اومده و اون اینکه آیا این روشی که وقتی داریم view را render میکنیم(یعنی اینکه یک object ازش میسازیم) داده هارو بهش assign کنیم روش درستی هست؟
    چون تو object فعلی مثلا Index با توجه به اون آموزش من و اون توضیحاتی که دادم و object ایندکس رو براتون رسم کردم درسته دوباره بیایم و به object فرزند model رو بدیم؟
    روشی نیست که در object فعلی بشه به object بالایی دست پیدا کرد؟

  8. #8
    کاربر دائمی
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    جزیره مارماری
    پست
    1,137

    نقل قول: چگونگی گرفتن method در php mvc

    در مورد assign کردن بله درسته و مشکلی نداره.در مورد model میشه منظورتون رو واضح تر بگید؟متوجه منظورتون نشدم؟

  9. #9

    نقل قول: چگونگی گرفتن method در php mvc

    ممنون از توضیحتون
    متوجه مشکلم شدم. اشکال من اینجا بود که از assign کردن model به object اصلی اول view رو به object اختصاص میدادم که با تغییر کد مشکلم حل شد.
    حالا یک مشکل جدید برام پیش اومده
    اون هم اینکه من در یک صفحه فرمی دارم که به طور مثال کاربر نام خانوادگی وارد میکنه. حالا این فرم ابتدا به controller و سپس به model صفحه مربوطه فرستاده میشه و در تابع مورد نظری که من خواستم query اجرا میشه. اما من action فرم رو به صورت report/family گذاشتم. وقتی فرم ارسال میشه url عوض میشه و از localhost/report به localhost/report/family تبدیل میشه که وقتی دوباره میخوام جستجو کنم با پیغام mothod not found رو به رو میشم. برای این مشکل چه راه حلی هست؟
    و اینکه وقتی از تابع family بخوام دوباره به view داده بدم باید چه کنم؟

  10. #10
    کاربر دائمی
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    جزیره مارماری
    پست
    1,137

    نقل قول: چگونگی گرفتن method در php mvc

    برای آدرس دادن توی action آدرس سایتتون رو تو یک ثابت تعریف کنید و از ادامه ثابت آدرس دهی کنید.در مورد تابع family هم اگه تو کنترلر تو آرایه data مدل رو فراخوانی کنید تو ویو اندیس اون آرایه متغییر میشه و به آسانی میتونید ازش استفاده کنید.البته این روش mvc که من استفاده میکنمه باید ببینید اون آموزش چیکار میکنه؟

  11. #11

    نقل قول: چگونگی گرفتن method در php mvc

    این روشی که شما دارین کار میکنین، معماری قدیمی MVC هست. بهتره با الگوی جدید کار کنید. توی الگوی جدید مشکلی نیست که ویو به دیتابیس دسترسی داشته باشه (البته نه اینکه مستقیماً کوئری بزنه بلکه با کمک مدل باید کارهاش رو انجام بده). در روش جدید سه بخش Model و View و Controller هرکدوم مستقل هستن و به هم دسترسی دارن. البته اگه دقیقتر بخوایم بگیم، View دیگه شئ نیست بلکه یک فایل ساده است که توسط کنترلر صدا زده میشه و درنتیجه توی ویو با کمک this$ به خود کنترلر دسترسی خواهید داشت. لزومی هم برای همنام بودن متدها و... وجود نداره.

  12. #12
    کاربر دائمی
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    جزیره مارماری
    پست
    1,137

    نقل قول: چگونگی گرفتن method در php mvc

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

  13. #13

    نقل قول: چگونگی گرفتن method در php mvc

    منظور من روش استارتر بود. روش شما مشکلی نداره.

  14. #14
    کاربر دائمی
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    جزیره مارماری
    پست
    1,137

    نقل قول: چگونگی گرفتن method در php mvc

    ببخشید خیال کردم برای من رو میگید

تاپیک های مشابه

  1. سوال: چگونگی گرفتن ورودی از یک صفحه ی php با جاوا اسکریپت
    نوشته شده توسط lost_z در بخش JavaScript و Framework های مبتنی بر آن
    پاسخ: 5
    آخرین پست: چهارشنبه 29 مرداد 1393, 01:49 صبح
  2. چگونگی گرفتن آیدی بخشی خاص در یک کد php
    نوشته شده توسط ms11309 در بخش PHP
    پاسخ: 16
    آخرین پست: پنج شنبه 29 خرداد 1393, 12:48 عصر
  3. چگونگی گرفتن Backup و Restore کردن از اطلاعات SQL Server
    نوشته شده توسط samandari در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 24
    آخرین پست: سه شنبه 31 مرداد 1391, 21:27 عصر
  4. چگونگی گرفتن خروجی از Stored Procedure
    نوشته شده توسط Maryam80 در بخش VB.NET
    پاسخ: 5
    آخرین پست: شنبه 24 بهمن 1388, 12:25 عصر
  5. چگونگی configure کردن Apache,PHP,MySQL
    نوشته شده توسط Natilous در بخش توسعه‌ی لینوکس و نرم افزارهای آزاد
    پاسخ: 2
    آخرین پست: سه شنبه 05 مهر 1384, 00:44 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •