ورود

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سوال درباره استاندرد بودن برنامه در کدیگنایتر



meysamamarlou
January 15th, 2019, 11:58
با سلام خدمت اساتید گرامی

من برنامه ای که قبلا بصورت فانکشن بیس نوشتم الان دارم تو فریم ورک کدیگنایتر مینویسم این برنامه ی منو دارم که زیر منو هم داره اینو فقط میشه وقتی که منو اصلی لود میشه تو همون view تو foreach ی while بزنم تا submenu هم زیرش بیاد برای این کار مجبور شدم یک فانکشن بنویسم و تو view به دیتابیس connect بزنم تا while کار کنه که توش ی کوئری دیگه زدم این کاری که انجام دادم استاندارد هست؟
(یعنی تو view ی بخششو php فاکنشن بیس کار کردم چون با سیستم mvc کار نمیکنه
مثلا :

$this->load->database()
تو view کار نمیکنه که کوئری بزنم

برنامه طوری هستش اول باید forach بزنه منو های اصلی لود بشه بعد هر کدوم زیرمنو داشت زیر منوش بیاد زیرش که واقعا این کارو از طریق model نمیشه انجام داد چون منو اصلی تو view لود میشه و اگه foreach تو foreach بزنم که آرایه شو از model و کنترلر بگیره دوبار زیرمنو هارو چاپ میکنه

ShirazSoft.com
January 15th, 2019, 13:04
سلام
وقت بخیر
اول دیتا بیس را auto load کنید که همه جا لود باشه و بتونید هرجایی query بزنید.
حالا برای ساخت منو ها شما کلا دوتا query می خواهید یکی منو اصلی یکی هم زیر منو ها.
کوئری اول را بزنید و با کوئری دوم کل زیر منو ها را بگیرید حالا همه را در یک آرایه مرتب قرار بدهید و آرایه را به صورت cache ذخیره کنید.

می توانید یک مدل ui بسازید و getMenus داخلش باشه که این کار انجام بدهد.

meysamamarlou
January 15th, 2019, 14:48
خیلی ممنون auto load کردم تو همون صفحه کوئری زدم اوکی شد


در یک آرایه مرتب قرار بدهید و آرایه را به صورت cache ذخیره کنید.


می توانید یک مدل ui بسازید و getMenus داخلش باشه که این کار انجام بدهد.
این 2تارو متوجه نشدم اگه نمونه کد یا آموزش سراغ دارید واسم بفرستید خیلی ممنون.

ShirazSoft.com
January 15th, 2019, 15:11
یعنی منو را به صورت یک ارایه در cache ذخیره کنید تا تعداد کوئری ها کم. شود و سرعت بیشتر شود.

T.Toosi
January 15th, 2019, 17:01
باسلام، با توجه به اینکه کدایگنایتر بر پایه معماری MVC می باشد، خیر کار شما استاندار نمی باشد و هیچ Query نباید در View Layer زده شود، داخل Controller مورد نظر متد خود را فراخوانی کنید و Model را به آن پاس دهید تا منو ها را دریافت کند و بازگشت دهد سپس منو ها را از Controller به View ارسال کنید.