اضافه کردن Paginate کامپوننت در داخل کلاس فرزند بدون اینکه $components کلاس AppController بازنویسی
در cakephp 2.6 و در داخل کنترلر پایه AppController ، یک متغییری هست که بوسیله آن کامپوننت هامونو لود میکنیم ، به اسم $components ، کلاس AppController من به صورت زیر هست:
class AppController extends Controller {
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array(
'controller' => 'posts',
'action' => 'index'
),
'logoutRedirect' => array(
'controller' => 'pages',
'action' => 'display'
),
'authenticate' => array(
'Form' => array(
'passwordHasher' => 'Blowfish'
)
),
'authorize' => array('Controller')
)
);
}
و کلاس پست:
class PostsController extends AppController {
public $components = array('Paginator');
//codes here
}
در کلاس پست متغییر $components کلاس والد بازنویسی (اورراید) می شود در صورتی که من می خوام در کلاس بچه (پست) علاوه حفظ متغییر $components والد ، متغییر $components بچه را نیز داشته باشم ، راه حل؟؟؟
نقل قول: اضافه کردن Paginate کامپوننت در داخل کلاس فرزند بدون اینکه $components کلاس AppController ب
درود..
کیک انجمن مخصوص به خود رو هم داره به این آدرس
cakephp.ir
و اما یه راه حل اینه شما همشو توی کنترل والد یا همون app بزارید و از همه جا قابل دسترس هست خواستید استفاده کنید نخواستید استفاده نکنید
public $components = array('RequestHandler','Session','Cookie','ShamsiD ate.Shamsi','Paginator','Auth');
نقل قول: اضافه کردن Paginate کامپوننت در داخل کلاس فرزند بدون اینکه $components کلاس AppController ب
نقل قول:
نوشته شده توسط
vahidqara
درود..
کیک انجمن مخصوص به خود رو هم داره به این آدرس
cakephp.ir
و اما یه راه حل اینه شما همشو توی کنترل والد یا همون app بزارید و از همه جا قابل دسترس هست خواستید استفاده کنید نخواستید استفاده نکنید
public $components = array('RequestHandler','Session','Cookie','ShamsiD ate.Shamsi','Paginator','Auth');
انجمنی که معرفی کردید بوکمارک کردم حتما سر میزنم :لبخندساده:
در مورد راه حلی که گفتید به ذهن خودمم رسیده بود اما این روش به نظرم پاک کردن صورت مساله هست.
فرض کنید که در کنترلر AppController یه تابعی داشته باشیم به اسم تست:
public function test(){
//codes here
}
اگه در کلاس PostsController هم تابعی همنام داشته باشیم و بخوام که در کنترلر فرزند ، هم تابع جدیدمو داشته باشم و هم تابع داخل کنترلر پدر رو داشته باشم می تونم این طوری بنویسم:
public function test(){
parent::test();
//baghie code ha inja
}
می خوام بگم که همچین راه حل مشابهی برای متغیرها وجود نداره؟؟؟
نقل قول: اضافه کردن Paginate کامپوننت در داخل کلاس فرزند بدون اینکه $components کلاس AppController ب
درود.. حتما سر بزنید..
بحث پاک کردن صورت مسئله نیست بحث راه حله دوستم..
بله برای متدها میشه از اون روشی که گفتید (ارث بری ) استفادخ کنید .. البته یه مطالعه در زمینه Request Life-cycle callbacks
داشته باشید.
http://book.cakephp.org/2.0/en/controllers.html
و برای متغیرها به این صورت نیست.. یه حوزه یا محدوده تعریف دارند.. محلی سراسری
وقتی متغیری در app تعریف میکنید در تمای کنترلرهای فرزند در دسترس میباشد و قابل تغییر از نظر محتوا..
حالا میخوای متغیر محلی تعریف کنید در همون کنترلر مد نظر این کارو انجام بدید..
امیدوارم جوابتونو گرفته باشید در غیر این صورت میتونید تو انجمن کیک جستجو و یا دوباره مطرح کنید موفق باشید