агаАвтор оригинала: Wicked
fixxxer
я правильно понимаю, что вместо parent вставится текст оригинального блока, но с переопределенным блоком title (будет: "domain.com: Title of this page"), а за ним доставятся <link> и <style>?
агаАвтор оригинала: Wicked
fixxxer
я правильно понимаю, что вместо parent вставится текст оригинального блока, но с переопределенным блоком title (будет: "domain.com: Title of this page"), а за ним доставятся <link> и <style>?
В одной известной CMS тот-же тайтл можно переопределять после того, как он "выводится".вот как такое на native php изобразить?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php include_http_metas() ?>
<?php include_metas() ?>
<title>domain.com: <?php if (!include_slot('title')): ?>default title<?php endif; ?></title>
<?php echo get_stylesheets($sf_response); # "stylesheets: [style]" во view.yml приложения ?>
<?php echo get_javascripts($sf_response); # "javascripts: [jquery.min.js, common]" во view.yml приложения ?>
</head>
<body>
<?php echo $sf_content ?>
<?php if (!include_slot('footer')): ?>
<div class="footer">
блаблабла
</div>
<?php endif; ?>
</body>
</html>
<?php slot('title') ?>Title of this page<?php end_slot() ?>
<?php use_stylesheet('extra-for-this-page') # лучше - через view.yml модуля ?>
<?php use_javascript('extra-for-this-page') # лучше - через view.yml модуля ?>
............... <?php # <- sf, используя ob_, все остальное затолкает в $sf_content к моменту рендеринга layout'а ?>
Вью отвечает за отображение информации.А где про такое прочитать можно? Я концепцию как-то уловил смутно, почему View должно еще что-то хранить и передавать?
View то передаваться может. Но вот использовать его в качестве транспортного объекта для передачи данных между контроллерами - на мой взгляд как-то страно.При этом этот вью может передаваться дальше в другие контроллеры
то есть, если тебе нужно в проекте вставить 20 таблиц с одинаковой разметкой, но разными данными ты делаешь это ручками вместо генерации? или каждый раз переновить разметку формы?Не знаю как вам, а мне шаблоны дают готовые полностью верстальщики, и какие-то нтмл сущности переносить в код - считаю медвежьей работой.
Ну у меня тоже не три компонента, а немного болееАвтор оригинала: HraKK
Ирокез
Ну я пошел чуть дальше, и расширил еще на пару сущностей.
Итого у меня есть ...
...
$tpl->t1 = date('Ymd',$view->ts);
$tpl->t2 = date('Ymd His',$view->ts);
...
и где-то в шаблоне
<?=$t1?> ... <?=$t2?>
неужто это нагляднее и проще нежели
...
где-то в шаблоне
<?=date('Ymd',$ts);?> ... <?=date('Ymd His',$ts);?>
<?=date('Ymd',$ts);?> ... <?=date('Ymd His',$ts);?>
$tpl->t1 = date('Ymd',$view->ts);
$tpl->t2 = date('Ymd His',$view->ts);
почему? Я вынесу 1 таблицу в под шаблон и буду оттуда вставлять, либо просто <?php foreach(): ?>то есть, если тебе нужно в проекте вставить 20 таблиц с одинаковой разметкой, но разными данными ты делаешь это ручками вместо генерации? или каждый раз переновить разметку формы?
Ну это плюс, но кеш свободно решает и этот плюс.а если нужно поубирать двойные пробелы из шаблона, то каждый раз резать их регуляркой, ловя вывод в буфер?
Ога, а потом я нужный шаблон изменю, и что ? очищать весь кеш шаблонов?) Хотя можно конечно и очистить, не так часто меняются шаблоны, но имхо - опять же это работа кеша, а не шаблонов.представь хотя бы преимущества, которые даст прекомпиляция, которая заменит include на уже сам код из нужного шаблона.
Это лично мое представление о вью. Так как одну страницу могут генерировать несколько контроллеров, то логично что между ними связывающее звено будет View. Не, ну конечно можно несколько View композиционно отображать, но так как я сторонник активных шаблонов, то это выпадает из архитектуры.Именно поэтому я и хочу почитать что-нибудь об этом.
У меня за вывод отвечает Engineчто у нас результаты просто не должны никуда выводиться).
Так же рендер отвечает за кеш и т.д.Итого у меня есть такое понятие как Engine - например http, json, xml, socks.
И я передаю в объект $Render->render( $View, $Engine )
Который уже передает на отображение в нужном мне формате - если http - то подключит шаблоны и отобразит, если в json - то в формате json( для аякс запросов, например), надо XML - получите, надо куда то по сокетам отправить ответ - получите и т.д.
В моей старой цмс не то что работает, а очень шустро работает за счет Lazy initilizatingЭто(активные шаблоны) кстати, мне до боли напоминает подход визуального программирования. Когда накидали кнопок и форм, подцепили обработчики - и вуаля... работает (быстро, дешево и сердито).
У тебя светлая и конструктивная голова. А опыт - знаешь, я люблю часто говорить на собеседованиях кандидатам которые дубы, но начинают мне доказывать что у них опыт в 2 раза больше чем у меня: " У тебя опыт - 1 год, повторенный 10 раз"Да никак я не предлагаю опыта у меня может с год
Хе-хе. У меня практически то же самое, только названия другие =)Я писал выше:
Итого у меня есть такое понятие как Engine - например http, json, xml, socks.
И я передаю в объект $Render->render( $View, $Engine )
Который уже передает на отображение в нужном мне формате - если http - то подключит шаблоны и отобразит, если в json - то в формате json( для аякс запросов, например), надо XML - получите, надо куда то по сокетам отправить ответ - получите и т.д.
Так же рендер отвечает за кеш и т.д.
Если пост - то отправляю на контроллер, тот обрабатывает и вызывает метод redirect(); Ну аякс - вернет ответ в формате json и отредиректит если надо.когда повесил в шапку контроллер для логина, который по идее и должен обрабатывать данные и делать редирект?
Контент( страницы, новости если мы сейчас в них находимся и т.д.) не вызывается из шаблона, это есть в первоначальном шаблоне - главном View. По этим же данным и строятся крошки. Шаблон подгружает только периферию.или контрол вывода новости, который распологается ниже хлебных крошек и не имеет возможности сообщить им в какой категории ты находишься?
Она у меня и стоитя не понял про экранирование
protected $escape = true;
Умные решения выливаются в паттерны)Хе-хе. У меня практически то же самое, только названия другие =)
Не понял? А как по другому? Ты имеешь ввиду сразу отдать страницу? Так, так нельзя делать потому что останется _POST запрос, и человек нажав Ф5 - увидит сообщение, а если надо передать контроль то делается элементарно - например 404 контроллер:вместо страницы уже для авторизованного пользователя
try
{
$this->getRouter()->addPattern( $pattern )->get( 'controller' );
}
catch( Core_Router_Exception $e )
{
$Controller = new Modules_Page_Controller_404( $this->getView() );
return $Controller->dispatch();
}
try{
$Auth // no Exception
return new Core_Respounse( $this->getApplication()->getRequest()->setRequest( 'user/authorize' ) );
}
Да, метод этот хороший, я не спорю, НО, новые грабли, работают лучше. Правда, пока только в головепо данному сабжу
я выше описал - обсчитывается ДО обработки или вывода страниц.угу, редирект только хотелось бы делать до обсчёта страницы и начала вывода, здесь уже аспектами попахивает.
пример?тоже не учитывают работу с блочными функциями
<widget:table>
<table:column title="URL" align="left" width="240px"/>
<table:group title="Group1" />
<table:column title="Column1"/>
<table:column title="Column2"/>
...
<table:rows rows=$Top10 />
</widget:table>
почему?изменение вёрстки таблицы вызовет необходимость менять чёрт знает сколько шаблонов