• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در مفهوم بخش view در الگوی mvc
#1
با سلام بر اساتید گرامی
من دارم روی یادگیری الگوی mvc کار می کنم
یک آموزش ساخت گالری با استفاده از mvc در اینترنت پیدا کردم که خیلی به من کمک کرد اما فکر کنم بخش view را خوب کار نکرده بود زیرا همه چی در بخش کنترلر ساخته می شد حتی طراحی تگهای خروجی و فقط این کد در بخش view بود:
<h1><?php echo $contents; ?></h1>
حالا من می خواهم بخش view را کار کنم و اولین سوالم اینه که چطوری واکشی رکوردهای جداول را در بخش view قابل دسترسی کنم تا بتوانم بخش خروجی برنامه را طراحی کنم؟
مثل این:
$row = mysql_fetch_array($result);
while($row){
//CODES
}
چطوری متغیر row را به ویو منتقل کنم؟
  پاسخ
تشکر شده توسط :
#2
فرض کن یه Object داری، که این Object همون View شماست. یعنی وقتی اکشن فراخوانی میشه، قبل از اینکه تابع اکشن شما اجرا بشه این Object ایجاد میشه (مثلا از کلاس MyView ) و در Action شما به صورت $this->myview قابل دسترسیه، این Object یه متد داره به اسم render (مثلا ) و شما وقتی این رندر فراخوانی میشه، داخل متد فایل View رو Include میکنید، در این صورت داخل فایل view یه متغیر وجود داره به اسم this که همون Object شماست. بعد از پایان اکشن متد رندر رو فراخوانی میکنی (به صورت اتوماتیک )
به عبارتی ، توی کنترلر $this->myview با $this توی View یکیه. حالا هر چی میخوای به این this->myview بچسبون .
مثلا
کد پی‌اچ‌پی:
$this->myview->->myexample=$row 
و توی View مستقیما از طریق this بهش دسترسی داری.
این روش Zend هستش، منم توی تجربه خودم اینجوری ایجادش کردم.
  پاسخ
تشکر شده توسط : rezaweb
#3
ممنون از جوابت
متوجه قضیه شدم ولی یک مسئله دیگر:
من می خواهم رکوردهای جدول را به ویو ارجاع بدهم(برای طراحی تگها)
$row = mysql_fetch_array($result);
while($row){
echo $row[0];
echo("<br>");
$row = mysql_fetch_array($result);
}

من این کد را در ویو نوشتم درسته؟ یا غلطه؟
نمی شود fetch را هم در کنترلر گذاشت؟
من الان فقط این قسمت را در کنترلر گذاشتم:
$this->registry->template->result = db::query('select * from kala');
و فقط result را به ویو ارجاع دادم
راه بهتری هم هست؟
  پاسخ
تشکر شده توسط :
#4
من همیشه سعی میکنم آرایه بفرستم یا Object البته دلیل من اینه که اکثرا View ها کار شخص دیگه ای هستش که کمتر با PHP سرو کار داره و بیشتر طراحه Smile اما اینم ایده بدی نیست در کل..
  پاسخ
تشکر شده توسط :
#5
میشه بگید چطوری این کارو می کنید؟
اگر ممکنه کدش را بنویسید اینجا
  پاسخ
تشکر شده توسط :
#6
آخه این کد که یه کم نیست Smile ولی یه مثال ساده امروز آماده میکنم .
  پاسخ
تشکر شده توسط :
#7
http://forum.iranphp.org/Thread-%D9%85%D...8%A2%D9%86
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان