Цитата (chee @ 9.10.2015 - 15:18) |
И мне не понятно, твое обострённое внимание к ним. |
MenuController extends Controller{
public function _construct($config, $request){
parent::__construct($config, $request);
$this->model = new menuModel();
$this->view = 'menu.tpl';
}
public function showMenu(){
$menu = $this->model->getMenu();
$this->view->assign('MENU', $menu);
}
Цитата (chee @ 9.10.2015 - 13:30) |
Invis1ble, эта картинка класического MVC, когда вьюхи слушают изменения модели, в JS фреймвоках она работает, на стороне сервера нет, точнее взоимодействие между MODEL и VIEW другое. |
Цитата (McLotos @ 9.10.2015 - 13:27) |
Просто если с View всё понятно - чистый html |
Цитата (McLotos @ 9.10.2015 - 13:27) |
с моделями тоже вроде как всё ясно - работа с информацией (например с БД) |
Цитата (McLotos @ 9.10.2015 - 13:27) |
понятно только то что он не должен ничего сам делать а только раздавать команды, но в таком случае все контроллеры будут состоять только из конструктора и 1 метода, типа |
Цитата (McLotos @ 9.10.2015 - 13:36) |
Invis1ble Да, я тоже заметил что она странная, отписался чуть выше. И вообще странно чтобы TWIN вдруг решил писать фремворк. он же упорно против ООП |
Цитата (Invis1ble @ 9.10.2015 - 13:31) |
(как он вообще MVC фреймворк собрался писать?) |
Цитата (chee @ 9.10.2015 - 15:36) |
В твоей концепции View вообще не делает, когда как это один из самых важных элементов в MVC. |
class View{
private $tpl;
private $skinBaseFile = 'base';
public function __construct($cfg, $request){
$userLang = (!$request->session('lang'))) ? $cfg->getConfig('defaultLang') : $request->session('lang');
require $cfg->getConfig('dirLangs') . $userLang . '.lang.php';
$this->tpl = new Template();
$this->tpl->ext = '.tpl'; //расширение для файлов шаблона
$this->tpl->htm = '.htm'; //раширение для файлов кэша
$this->tpl->skinDir = $cfg->getConfig('dirViews'); //директория с шаблонами
$this->tpl->skin = $cfg->getConfig('defaultSkin'); //имя шаблона
$this->tpl->cache = $cfg->getConfig('dirViews') . 'cache'; //директория куда должен сохраняться кэш страницы.
$this->tpl->lang = $cfg->getConfig('defaultLang'); //язык по умолчанию
$this->tpl->clearElements = $cfg->getConfig('clearElements'); //false - не удалять с шаблона те переменные, значения которых неизвестны
$this->tpl->saveCache = $cfg->getConfig('saveCache'); //false - не сохранять кэш
$this->tpl->useHF = $cfg->getConfig('useHF'); //false - не использовать header и footer как отдельные файлы. у нас базовый шаблон, всё встраиваем в него
$this->tpl->assign('LANG', $lang); //передаем в шаблон перевод некоторого текста на язвк пользователя
$head = array('CSS'=>$cfg->getConfig('mainPage') . $cfg->getConfig('dirViews') . $cfg->getConfig('defaultSkin') . '/style.css',
'JS'=>$cfg->getConfig('mainPage') . $cfg->getConfig('dirJS') . 'scripts.js');
$this->tpl->assign('HEAD', $head);
}
public function assign($key, $arr){
$this->tpl->assign($key, $arr);
}
public function generate(){
$this->tpl->buildPage($this->skinBaseFile);//передаем имя базового шаблона
}
}