Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: MVC, подключение статичных блоков страницы..
Форумы портала PHP.SU » PHP » Уроки php » MVC, подключение статичных блоков страницы..

Страниц (1): [1]
 

1. Cooligin - 18 Сентября, 2016 - 13:59:02 - перейти к сообщению
Сижу я изучаю паттерн mvc(или парадигма?, а то умные дядьки кидаются своими умными словами и не поймешь кто прав, а кто виноват).


Вот такая у меня простецкая структура.
Роутер смотрит какую страничку запрашивает пользователь, подключает(если может) класс, а затем вызывает нужный метод (согласно шаблону из routes.php).

И вот тут то возникает вопрос, я бы хотел понять как лучше организовать построение страницы. В плане иметь 3 статичных блока, это Header, Footer, Menu.
Которые должны быть абсолютно одинаковыми на всех страничках. Можно конечно, по-старинке подключать
, но разве это верно?
Наблюдал как в контроллерах собирают что-то вроде:
PHP:
скопировать код в буфер обмена
  1. $test->method('head');
  2. $test->method('content');
  3. $test->method('footer');

опять же, не знаю, насколько хорош этот вариант.
я сделал так:
PHP:
скопировать код в буфер обмена
  1.         public $menu;
  2.         public function __construct() {
  3.             $this->menu = array();
  4.             $this->menu = Menu::getMenuList();
  5.         }

ну и на каждой страничке вызываю как-то так:
PHP:
скопировать код в буфер обмена
  1.     |<?foreach($this->menu as $menuItem):?>
  2.  
  3. <a href="/<?=$menuItem['path']?>">
  4.     <?=$menuItem['name']?>
  5. </a> |
  6. <?endforeach;?>


работать-то работает, но такое надо прописывать ведь в каждом контроллере для каждых различающихся по функциям страничкам, вероятно можно сделать некоторый общий контроллер, а остальные будут его расширять, скажем
PHP:
скопировать код в буфер обмена
  1.  
  2. class MainController{
  3.         public $menu;
  4.         public function __construct() {
  5.             $this->menu = array();
  6.             $this->menu = Menu::getMenuList();
  7.         }
  8. }
  9.  
  10. class NewsController extends MainController{
  11. ...
  12. }
  13.  

в таком случае можно будет какие-то базовые и не изменяющиеся вещи инициализировать прямо-таки сразу для всех страниц.

Надеюсь суть вы поняли вопроса: как наиболее правильно подключать элементы к странице, такие как header, footer, menu.
P.S. я смотрю видео уроки, текстовые уроки, везде примерно одно и то же, рассказывается концепция, там делаем то, там делаем это, некоторые отправляют смотреть готовые фреймворки, пытался, но чет как-то безуспешно, набегом наскоком найти не удалось.
2. caballero - 18 Сентября, 2016 - 22:53:04 - перейти к сообщению
лишнее доказательство что MVC не самая удачная архитектура в вебе.

 

Powered by ExBB FM 1.0 RC1