PDA

View Full Version : صدا کردن یک ویو بدون کنترلر mvc



masiha68
سه شنبه 09 اردیبهشت 1393, 08:09 صبح
سلام دوستان
توی پروژه گاهی لازمه یک ویو و مدل همیشه فراخوانی بشن ... مثلا مدل اخرین دیدگاه ها و ویو مورد نظر
از نظر تئوری درست نیست این ویو و مدل بدون استفاده از کنترلر فراخوانی بشن ولی خب راهی به ذهنم نمیرسه که چطور این کارو انجام بدم

** دارم ام وی سی رو یاد می گیرم و از روی پکیج اقای جنتی کار می کنم **

sadegh1362
سه شنبه 09 اردیبهشت 1393, 13:46 عصر
سلام
دلیل اینکه می خواید کنترلر رو فراخونی نکنید چیه؟ کار خاصی رو می خواید انجام بدید ؟

masiha68
سه شنبه 09 اردیبهشت 1393, 15:11 عصر
سلام
دلیل اینکه می خواید کنترلر رو فراخونی نکنید چیه؟ کار خاصی رو می خواید انجام بدید ؟

ببینین وقتی ما هیچ کنترلری نداریم (هون $url['0'] ) باید ایندکس نشون داده بشه و این ایندکس هم شامل بعضی از ویو ها و مدل هاست مثل اخرین مقالات ، اخرین دیدگاه ها و ... حالا من موندم چجوری این رو درست کنم .
یه مشکل دیگه ای که دارم اینکه که نمیدونم چجوری یه ستون کنار مشلا اسایدبار برای ویوها (قالب اصلی ) بزارم که بخش اخرین مقالات و اخرین دیدگاه ها و ... توش جا بشه

***BiDaK***
سه شنبه 09 اردیبهشت 1393, 16:41 عصر
با توضیحاتی که آقای جنتی دادن خوب به نظرم میشه در داخل کنترلر مورد نظر متدی نوشت که این متد مثلا آخرین دیدگاههارو برگردونه.که این متد عملیات رو ارجاع میده به مدل مربوطه و نتیجه رو return میکنیم به یک property از شی ء view در constructor کنترلر مربوطه و در فایل header چک میکنیم که اگز property ویو وجود داشت یک بلاک برای دیدگاه ها نشان داده شود و با foreach و ... نتیجه رو چاپ کنیم.
بازم اگه راه صحیحش چیز دیگس آقای جنتی بگن تا استفاده کنیم.

masiha68
چهارشنبه 10 اردیبهشت 1393, 17:46 عصر
فک نکنم درست باشه . طوری که من برداشت کردم برای اجرای هر ویو یا مدل باید حداقل یک کنترلر وجود داشته باشه که در حال دیفالت ما هیچ کنترلری رو صدا نمی کنیم
کاری که من کردم اینه که وقتی حالت دیفالت افتاق می افته اون رو توسط هدر به یه یحال دیگه که کنترلر داره می برم و یه سری از این مدل ها و ویوها رو فراخوانی می کنم ولی بازم یه مشکلی هست ... وقتی کنترلر عوض میشه اون ویوها و مدل دیگه کار نمی کنن ...مثلا من وقتی روی حالت دیفالت هسا می برمش روی index/showpost و مدهای show_comment و show_link رو فراخوانی می کنم ولی وقتی سیستم میره روی کنترل مثلا login/dologin سیستم ارور میده چون اون کنترلر showpost دیگه کار نمی کنه و ویوها بدون مقدار دهی فراخوانی می شن

کسی هست راهکاری بلد باشه

***BiDaK***
چهارشنبه 10 اردیبهشت 1393, 22:26 عصر
در حالت default هیچ کنترلی صدا زده نمیشه؟؟؟ پس چک کردن کنترلر url چیه؟میشه چک کرد اگه وجود نداشت شی ء کنترلر مد نظر new بشه و با شی ء جاری متدش اجرا بشه.
یعنی واسه هدر و فوتر هم باید کنترلر در نظر گرفت؟
حالا بازم توو راهی که گفتم میشه در یک کلاس بیس مثل database عملیات سلکت رو بصورت کلی نوشت و در مدل مد نظر فقط سلکت با شی ء جاری از db انجامش داد و return کرد.
در هر صورت این روش هم جواب میده.
من هم وقتی شما سوال رو پرسیدید بعنوان سوال جوابم رو مطرح کردم که دوستان mvc کار بگن درسته یا نه روش بهتری هم وجود داره.

sadegh1362
شنبه 13 اردیبهشت 1393, 07:31 صبح
در مواقعی که شما احتیاج دارید کنترلر دیگه رو غیر از کنترلر فراخونی شده در صفحه صدا بزنید . بهترین راه استفاده از Ajax هستش . چون ajax بدون توجه به url صفحه درخواست رو برای سرور ارسال می کنه . در این حالت شما می تونید . کنترلر دیگه ای رو فراخونی کنید و چون ساختار MVC هستش آدرس دهی رو MVC بدین . کار می کنه . (در فیلم آموزش داده شده )
در غیر اینصورت باید شی کلاس مد نظرتون رو در تابعی که در لحظه نمایش فراخونی می کنید new یا از طریق تابعی دیگه براش ارسال کنید .
اینو به یاد داشته باشید که فراخونی کنترلر در MVC یه اصله و نباید ازش جدا شد چرا ؟ چون هدف کنترلر کنترل درخواست هستش . مثلا در مورد کاری که شما می خواید انجام بدین . می خواید در یک صفحه فعالیت جداگانه ای از کنترلر جاری انجام بدین . اما درخواست اصلی شما همون کنترلر جاری هستش که در url زدید و پروژه شما در اون task فراخونی شده .
راه دیگه ای که به نظرم می رسه اینه که شما می تونید . یه تابع در همون کنترلر جاری بنویسید . و در تابع مد نظرتون رو با عبارت this$ فراخونیش کنید (در تابع جاری).و مقدارش رو برای view ارسال کنید .

sadegh1362
شنبه 13 اردیبهشت 1393, 07:37 صبح
لطفا سوالات مربوط به پکیج آموزش MVC رو در تاپیک خودش بنویسید . تا بقیه هم ازش استفاده کنن .همین اینکه تاپیک فعالتر میشه . ممنون می شم.

masiha68
شنبه 13 اردیبهشت 1393, 07:38 صبح
حق با شماست ... حتما باید یه کنترلر فراخوانی بشه
کاری که من کردم این بود که توی کنترلر پیش فرض یا همون index مدل و ویوها رو فراخوانی کردم ...که البته روی پروژه ی شما جواب نداد و الان که دارم روی yii کار می کنم جواب داد.

masiha68
شنبه 13 اردیبهشت 1393, 07:40 صبح
چشم
کاش یه سی ام اس کوچیک توی فیلم درست می کردین که همه چی کامل تفهیم بشه و کسایی که مثل من دانش کافی ندارن بتونن استفاده بیشتر ببرن

sadegh1362
شنبه 13 اردیبهشت 1393, 07:52 صبح
حق با شماست ... حتما باید یه کنترلر فراخوانی بشه
کاری که من کردم این بود که توی کنترلر پیش فرض یا همون index مدل و ویوها رو فراخوانی کردم ...که البته روی پروژه ی شما جواب نداد و الان که دارم روی yii کار می کنم جواب داد.
اگر در index شی کلاس ها رو براش بفرستید حتما کار میکنه .
فریم ورکی که در فیلم آموزش داده شده فریم ورکی هستش که من همین الان داریم باهاش کارمی کنم. و کامله . البته بعضی جاهاش رو تغییر دادم .
موفق باشید .