ورود

View Full Version : فراخوانی چند کنترلر با هم



tooka123
پنج شنبه 10 دی 1394, 12:32 عصر
سلام ، در مورد صفحه اصلی سایت یه سوال دارم

فرض کنید با کنترلر home صفحه اصلی سایت را نشون بدهیم و در صفحه اصلی سایت یک سایدبار داریم و یک قسمت content ،و فقط اطلاعات قسمت content تغییر می کنه که اطلاعات content را با کنترلر مربوطه زمان آدرس دهی به دست میاریم تا اینجا من مشکلی ندارم

ولی اگه در قسمت ساید بار هم بخواهیم چندتا ماژول نمایش دهیم مثلا آخرین اخبار که این ماژول با یک کنترلر جدا نوشته شده مثلا last_news ، می خوام بدونم وقتی کنترلر home فراخونی میشه کنترلر last_news را چه طور همزمان با home صدا بزنیم .

البته من قبلا در قسمت ساید بار با ajax اطلاعات last_news رو می گیرم ولی می خوام بدونم راه دیگه بدون ajax نیست .

plague
جمعه 11 دی 1394, 12:59 عصر
نمیشه چند تا کنترلر با هم داشت
راه حل این مشکل تغییر در معماری نرم افزارتون هستش
شما اگه از توابع هر کنترلر مستقیم ویو رو فراهم کنید باید یه سری کد های تکراری رو توی همشون بنویسید مثلا آخرین اخبار
راه حل اینه که 1 کنترلر پدر بسازید مثلا base_controller و همه کنترلر ها رو از این extend کنید اونوقت با استفاده از کنترلر پدر همه view ها رو لود میکنید
و اینجوری میتونید یه سری کد ها رو برای همه کنترلر ها داشته باشید بدون اینکه نیاز باشه برای هر کدوم بنویسید


مثلا توی کنترلر هات اینجوری میشن توابع


function c1(){
// code
// code
$this->parent_load('c1_view' , $data );
}

function c2(){
// code
// code
$this->parent_load('c2_view' , $data );

}

function c3(){
// code
// code
$this->parent_load('c3_view' , $data );

}


توی کنترلر پدر که همه ازش استفاده میکنن اینجوری میشه



function parent_load($view , $data )
{
// code for all
// code for all
// code for all
$this->load->view($view , $data );
}