Вот сценарий; В разделе администрирования веб-сайта у меня есть довольно много таблиц CRUD, которые должны отображаться при успешном выполнении/info/сообщения об ошибках, когда действие было выполнено, например, удаляемая запись. Я уверен, что все знакомы с этим.Рендеринг HTML внутри классов?
Это обычно включает в себя сообщения, обернутые в пределах <div class="alert alert-success">User updated</div>
или что-то подобное.
В текущем приложении Laravel я создаю, у меня есть файл конфигурации:
<?php
return array(
'info' => array(
'start' => '<div class="callout callout-info"><h3><i class="icon-info-sign-sign"></i> Information</h3>',
'opening' => '<i class="icon-caret-right"></i> ',
'closing' => '<br>',
'end' => '</div>',
),
'success' => array(
'start' => '<div class="callout callout-success"><h3><i class="icon-ok-sign"></i> Success</h3>',
'opening' => '<i class="icon-caret-right"></i> ',
'closing' => '<br>',
'end' => '</div>',
),
'warning' => array(
'start' => '<div class="callout callout-warning"><h3><i class="icon-warning-sign"></i> Warning</h3>',
'opening' => '<i class="icon-caret-right"></i> ',
'closing' => '<br>',
'end' => '</div>',
),
'error' => array(
'start' => '<div class="callout callout-danger"><h3><i class="icon-remove-sign"></i> Warning</h3>',
'opening' => '<i class="icon-caret-right"></i> ',
'closing' => '<br>',
'end' => '</div>',
)
);
Какой класс форматера использует для визуализации объекта MessageBag
(хранит массив, например ошибки проверки, такие как недействительный адрес электронной почты.) в читаемый HTML. Это не точно хранит HTML в классе Formatter, но делает его внутри.
Форматировщик класс просто делает объект MessageBag с опцией конфигурации так:
$formatter = new Formatter('success', $messageBag);
$html = $formatter->render();
который затем передается от контроллера к просмотру и отображается.
return View::make('admin.template')->with('message', $html);
Этот метод позволяет мне обновлять HTML-код и то, как он передается по всему разделу администрирования из одного класса. Таким образом, он согласуется с принципом DRY
. Он уменьшает все циклы foreach
по моим шаблонам.
Так что напрашивается вопрос ...
это лучше повторить себя в шаблонов представления, а не смешивать бизнес и презентационные слои? Или наоборот?
Мое личное мнение (в настоящее время) заключается в том, что использование файла конфигурации в сочетании с классом является хорошим решением. Я также считаю, что хранение HTML в классе - это плохая практика, поэтому файл конфигурации.