ПредишенСледващото

Не е тайна, че CodeIgniter използва концепцията за MVC (Model-View-Controller). Преглед или View - отговорен за показване на данни за потребителя. Основното предимство на концепцията за MVC е да се разделят с управлението на логиката на приложението, за събиране на данни и дисплей. Като се започне да се работи с CodeIgniter. отдалечавайки се в един тюрлюгювеч на HTML / PHP / SQL на едно място (аз все още намерените файлове, модули 5000-7000 струни адски функции в няколко хиляди реда). Работа с изглед. че не трябва да се отнася до моделите директно. Тя трябва да бъде аксиоматична за вас. Всичко, което от гледна точка можете да - Този процес постъпващите данни от контролера и да използвате помощник на.

Нека недостатъци в основата изпълнение Вижте вид. Например, вземете парче документация: CodeIgniter> Ръководство за потребителя> Прегледи

В повечето случаи, ние разделяме шаблона на 3 части: съдържанието (която варира в зависимост от страницата), всичко, което е пред него (хедър, заглавията, менюта, шапка и др ...), както и всичко, след като (долния, мазе, меню, контакти и т.н.).

Меню обикновено трябва да получите от базата данни. Това се прави по следния начин:

Не е най-елегантната и красива техника. Това, което са дошли да CodeIgniter. За да сложи нещата в ред в кода си и да се измъкне от бъркотията на SQL / PHP / HTML. Но в крайна сметка, за да го и се върнахме.

2. Разширяване на база контролера.

Начинът, по който аз отидох преди 3 години, когато учех CodeIgniter. Методът се състои в премахване на повтаряща се част от код в един-единствен метод в основата на контролера, който ще отговаря за изобразяване на страницата. Всички ръководители ще бъдат наследени от една базова. A View за да се покаже, че ще прилага нов метод _render.

Нека разгледаме един по един. Дизайн: окончателен публична функция _render:

окончателен - не отменя _render метод в подклас на MY_Controller. Тази защита срещу случайни промени. Ако внезапно ви се наложи да създадете друг основен модел, можете да създадете нов метод: _render_ajax (), _render_admin () и така нататък.

публично - прави метода на разположение извън класната стая.

_render - долна черта преди името на метода позволява да създадете сигурен начин на CodeIgniter. който не може да бъде поставено под браузър.

В крайна сметка ние имаме чиста код в контролерите и изходния модел за контрол на едно място. Но това не е добра, бих искал нещо повече. Нищо чудно, че почти всички CMS или проекти в CodeIgniter разработчиците са първите от всички решения за запис / помпа за подмяна на стандартен механизъм за работа с изглед.

В следващата част ще разгледаме готовите решения за лесен и елегантен изглед контрол.

Погледни към страната: $ това-> натоварване-> Варс ($ данни);
Това ще предостави $ данни от всички оглед изтеглени без да се прехвърлят данни.
Преди това направи $ данни [ 'content_view'] = 'някои / име »;
и смело винаги се обадете на същото мнение, нека главната.
във вътрешността на главен запис
$ Това-> натоварване-> изглед ( "глава");
$ Това-> натоварване-> изглед ($ content_view) ";
$ Това-> натоварване-> изглед ( "долния");

Тя се подготвя втората част, която ще бъде преглед на библиотеките за шаблони Код Запалителен

Вече четири месеца запознаване на CodeIgniter. Всички по-горе методи се е достигната. Радвам се, че това е често срещана практика. Благодаря за статията =)

Да, така е, версия 2.1.3. Библиотека свален и инсталиран, CodeIgniter-Layout (искри), но как да го използвате и не разбирам това, което беше в действителност е необходимо също не е напълно ясно. За мен има само една цел, да се отървете от едни и същи видове документи:
$ Данни [ 'страници'] = $ това-> pages_model-> get_pages ();
$ Данни [ 'pages_info'] = $ това-> pages_model-> get_pages_info ($ наименование);
$ Данни [ 'категория'] = $ това-> pages_model-> get_category ($ наименование);
във всички функции на контролера. Проблемът с шаблона Аз отдавна е решено по отношение на вида на натоварването. Остава само един проблем с вида. Както аз го разбирам, може да поеме по пътя, който по някакъв начин предава свойствата на методите на един клас в друг клас, като в този случай във вашия пример. Но как да се приложи до края не е ясно. И няма време да седне да учи някои неясни библиотеки с шаблони, които в бъдеще може да не са ми полезни на практика в продължение на няколко месеца или половин година.

За мен има само една цел, да се отърве от един и същи вид на запис

Уверете се, основната версия на $ данни на контролера атрибут
В конструктора, контролерът прави задача:
$ Това-> данни [ "страници"] = $ това-> pages_model-> get_pages ();
$ Това-> данни [ 'pages_info'] = $ това-> pages_model-> get_pages_info ($ наименование);
$ Това-> данни [ 'категория'] = $ това-> pages_model-> get_category ($ наименование);

И вместо да премине $ данни $ това-> данни в шаблона.

Малко по-неразбрани, Направи основната версия на $ данни на контролера атрибут. Този имот прави в MY_Controller и след това в другите контролери наследяват един клас с този имот? И как да се направи този имот? В края на краищата, имотът трябва да е присъщо на всеки обект. И ако не се създаде обект, как да създадете собственост. Обяснете моля.

Подкрепете проекта - споделете линка, благодаря!