Форум → Программирование → PHP для идиотов → Где вызывать декорировани, короче не знаю даже как тему назвать...
Где вызывать декорировани, короче не знаю даже как тему назвать...
Страницы: ← Предыдущая страница • Следующая страница →
-
Июнь 27, 2010, 7:38 д.п., спустя 3 минуты 47 секунд
Согласен с тем, что верстальщика не надо грузить. НО, если мы перенесём форматирование данных в контроллер или модель, то вместо правки шаблонов нам придется править контроллер или модель. Это ещё хуже.
Можно, конечно, выделить специальный слой форматирования, как ты предлагаешь. Я считаю этот слой относится к представлению.ιιlllιlllι унц-унц -
Июнь 27, 2010, 8:20 д.п., спустя 41 минуту 47 секунд
модель извлекает данные, её трогать не нужно. а контроллер … эээ… тут как бы немного путаница
в паттерне MVC есть звено "контроллер" (C), которое содержит в себе роутер. а есть вызываемые роутером функции, которые не являются моделью. вот их часто называют контроллером, что в общем не всегда правильно.
request
↓
M <-> C <- V (template)
↓
HTML
вот эта схема неправильнане всё полезно, что в swap полезло -
Июнь 27, 2010, 8:09 д.п., спустя 23 часа 49 минут 38 секунд
Ну а где правильная схема? )))ιιlllιlllι унц-унц -
Июнь 27, 2010, 8:20 д.п., спустя 11 минут
почему неправильна? потому что в ней контроллер содержит два важны звена - роутер и функцию-пару для шаблона (шаблон подразумевает наличие функции, генерирующей для него данные, они идут парами всегда), которые явно не показаны.
Вот правильно:
request
↓
router
↓ ↓
model action template
↓ ↓
templater
↓
HTML
router - можно считать что это часть контроллера, templater - тоже можем считать что это часть контроллера.
а то что навешивает разработчик - это action и template (иногда ещё модель). Так что action - это не контроллер, в смысле не ядро приложения. Вместо MVC более правильно использовать аббревиатуру RAMV (router - action - model - view), впрочем это я сам придумал для наглядности, так что не критично.
action и template идут парой. и если мы выносим преобразование из template - мы обязаны внести его в action (и наоборот)не всё полезно, что в swap полезло -
Июнь 27, 2010, 8:24 д.п., спустя 3 минуты 43 секунды
Удержался от сарказма. Здесь есть логика. master, напиши развернутую статью про архитектуру запрос-хуйнанэ-ответ. С примерами.ιιlllιlllι унц-унц -
Июнь 27, 2010, 8:41 д.п., спустя 17 минут 12 секунд
хз что там писать. схемка же естьне всё полезно, что в swap полезло -
Июнь 27, 2010, 12:09 п.п., спустя 3 часа 27 минут 55 секунд
потому что некоторые строки, которые ты будешь получать из базы, уже заэскейпены, и их эскейпить не надо
в честь чего такая уверенность, я такой фигнёй не страдаю….
master, ты в принципе правильно говоришь насчет работы, мне действительно удобнее писать, когда в шаблоне данные в уже нужном формате. Но это не правильно с точки зрения обязанностей. Все преобразования должны быть в представлении, по этому поводу даже паттерны есть соотвествующие Я же привел пример с датой. Ты что предлагаешь так писать:action::run()
{
$this->view->assign('data_without_year') = date('d m', $user->data);
$this->view->assign('data_words') = date('j, n, Y', $user->data);
}
//view
<?php echo $this->data_without_year ?>
<?php echo $this->data_words ?>
вместоaction::run()
{
$this->view->assign('user', user);
}
//view
<?php echo $this->dataHelper('d m', $this->user->data) ?>
<?php echo $this->dataHelper('j, n, Y', $this->user->data) ?>
Но вот для json, как говорит НРГ нужен некий prepare, который как я понял, сделает ту же работу что и представление. Это я думаю тоже как то тупо, два раза делать одно и то же. Короче фиг знает. -
Июнь 27, 2010, 12:15 п.п., спустя 5 минут 49 секунд
я такой фигнёй не страдаю
никогда не прикручивал tinymce какой-нибудь?Ты что предлагаешь так писать
дане всё полезно, что в swap полезло -
Июнь 27, 2010, 12:20 п.п., спустя 5 минут 25 секунд
да
всегда писал в стиле втором, когда даные ескейптся в шаблоне, и совсем недавно понял, что правильнее их ескейпить в контроллере/модели так сказать, а не во вьюхе, по простой причине - будет проще сменить шаблон, не наделав ошибок :)
возможно еще какую то логическую прокладку сделать типа
мвц : мфвц - модель фильтр вью контроллерСапожник без сапог -
Июнь 27, 2010, 12:31 п.п., спустя 10 минут 36 секунд
возможно еще какую то логическую прокладку сделать типа
мвц : мфвц - модель фильтр вью контроллер
так я об этом и начал говорить, как и где именно она может вызваться. Может это вполне может принадлежать модели? например так:
//а)
public function __get($name)
{
$list($name, $demander) = explode('_', $name);
$decorator = Decorator::findByDemender($demander);
if ($decorator) {
return $decorator->decorate($this->_data[$name]);
}
return $this->_data[$name];
}
$object->login_html;
//б)
public function __get($name)
{
return $this->getUniConverter($this->_data[$name]);
}
$object->login->asHtml();
или это именно внешняя фигня или как? -
Июнь 27, 2010, 12:32 п.п., спустя 1 минуту 24 секунды
Давайте для ясности сосредоточимся на представлении даты и, imo, станет понятно где конфета, а где говно.
Пусть я веду блог. Сейчас у меня дата выводится как 2010-06-25. Я решил поменять "тему", чтобы дата выводилась как каледарный листок. Для этого дата должна быть представлена как
<span class="year">2010</span><span class="month">06</span<span class="day">25</span>
Дальше CSS будет творить чудеса.
Завтра я решу, что мне больше подходит выводить дату как "только что", "неделю назад", "очень давно", а при наведении курсора чтобы всплывал тайтл с конкретной датой. Должен ли я под новую тему переделывать модель или контроллер?
Нет нах!
Конечно, если на меня работает раб-верстальщик, я не хочу чтобы он был слишком умным и дорогим. Не надо грузить его лишними знаниями. Оптимальный выход, опять imo, выделить форматирование в отдельную секцию шаблона. И за эту секцию будет отвечать своей задницей программерιιlllιlllι унц-унц -
Июнь 27, 2010, 12:36 п.п., спустя 3 минуты 56 секунд
artoodetoo,
исправляешь action чтобы он передавал не один параметр, а три - месяц, год, день месяца, в шаблоне изменяешь
<span class="date">{$date}</date>
на
<span class="year">{$year}</span><span class="month">{$month}</span<span class="day">{$day}</span>Спустя 50 сек.Должен ли я под новую тему переделывать модель или контроллер?
модель - не обязательно, контроллер (точнее action) придётсяне всё полезно, что в swap полезло -
Июнь 27, 2010, 12:39 п.п., спустя 2 минуты 21 секунду
твой "экшн" идет парой с шаблоном. значит фактически это часть шаблона, неважно в одном они файле ли в двух. это вполне согласуется с тем, что я написал. разница в названиях.ιιlllιlllι унц-унц -
Июнь 27, 2010, 12:42 п.п., спустя 2 минуты 57 секунд
в данной ситуации я за "избыточность", то есть контроллер должен давать вьюхе и дефолтный форматированый дат и таймстамп, чтобы моно было самому нахуячить :DСапожник без сапог -
Июнь 27, 2010, 12:44 п.п., спустя 1 минуту 53 секунды
дата датой, давайте про объект поговорим. Если передавать его в шаблон, то по версии master надо декорировать в объекте, а по версии artoodetoo в шаблоне. Где это делать? На сколько недопустимо делать это в объекте так как я показал выше?
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!