Если вы используете MVC в своем веб-приложении, тогда вам не нужно использовать Smarty (TemplateEngine). - PullRequest
1 голос
/ 17 июня 2010

Я просто пытаюсь понять шаблонизацию (систему).Если вы используете MVC в своем веб-приложении, вам не нужно использовать что-то вроде Smarty (движок шаблонов), так как вы все равно уже отделяете код приложения от кода презентации, используя MVC, верно?пожалуйста, поправьте меня?

Так я прав, думая, что это MVC или шаблонизатор, или вы используете оба в своих приложениях? Если кто-нибудь может объяснить это подробно, было бы здорово.

Спасибозаранее; -)

Ответы [ 7 ]

1 голос
/ 17 июня 2010

MVC состоит из трех основных компонентов.Модель - Вид и Контроллер.Представления соединяются с контроллером и моделью, и это именно так, как должно быть, если ваше представление не разговаривает с двумя другими компонентами, то у вас есть нечто, называемое PAC (Presentation-abstraction-control).

Это означает, что представление имеет больше функциональных возможностей, чем вы можете подумать, и таким образом вы можете использовать несколько методов для ускорения генерации представлений.

Переходя прямо к ответу, вы можете (и должны) использоватьшаблонизатор для ваших просмотров.Вот короткий пример, вы можете увидеть, как он обрабатывается CakePHP (PHP MVC framework)

Предположим, вы переходите к http://www.example.com/books/get/2

Это обрабатывается контроллером, который знает, что пользовательзапрашивает действие «get» (с параметром 2, который может быть идентификатором) модели «Books».Там он должен найти книгу с id = 2 и извлечь ее.

Контроллер выполняет поиск в базе данных, получает соответствующую книгу и заполняет переменную.Краткий код:

function get($id){
  $book = $this->Book->find($id);
  $this->set('bookVariable',$book);
}

Последняя строка (% this-> set) назначит переменную представлению.Точнее, в представлении «get» будет переменная bookVariable с содержимым книги.Краткий код представления:

<html>
...
<body>
<ul>
<?
  if($bookVariable){
    echo "<li>$bookVariable->name</li>"
    echo "<li>$bookVariable->price</li>"
  }
?>
</ul>

Затем вы можете увидеть, как взаимодействуют эти два компонента, вы можете или не можете использовать систему шаблонов, это не имеет никакого отношения к MVC.Опять же, я рекомендую вам использовать его.

0 голосов
/ 17 июня 2010

Smarty (так же, как и другие сторонние шаблоны) - одна из возможных реализаций части View MVC.Вам не нужно его использовать, хотя вы можете, если хотите.

MVC отделяет данные от представления, но не полностью.Если вы не создаете полностью статический html, вам нужно будет поместить некоторые динамически сгенерированные данные в ваш шаблон.Идея заключается в том, что ваш контроллер вычисляет эти данные и помещает их в одну или несколько переменных PHP, которые затем используются вашим шаблоном.

Допустим, вы хотите поприветствовать пользователя, чье имя вы откуда-то выбрали (база данных, сеанс и т. Д.).Ваш контроллер выполнит свою задачу и, наконец, передаст имя пользователя вашему представлению:

$view->set('name', 'Bob');

$ представление - это объект, представляющий ваше представление.Реализовано ли это с помощью Smarty, vanilla PHP или какой-либо другой системы шаблонов, на данном этапе не имеет значения.Синтаксис может отличаться, но логика та же.

На этом этапе вы хотите, чтобы ваш шаблон использовал эту переменную.Как это будет сделано, зависит от того, как работает ваш View.В простом PHP вы можете использовать $ view для внутреннего выполнения следующих действий:

$name='Bob';

, и ваш шаблон получит следующее:

Hello <?php echo $name ?>. Welcome back.

Или вы можете использовать Smarty, в этом случае ваш шаблонбудет выглядеть так:

Hello {$name}. Welcome back.

Логика та же, реализация меняется.

Наконец, если вы решите, следует ли использовать Smarty в вашем View, я личнорекомендую против этого, поскольку он не делает ничего, чего не может сделать обычный PHP, что фактически делает его лишним багажом.Это еще одна вещь, о которой нужно беспокоиться, не говоря уже о том, что вам нужно убедиться, что она установлена ​​на каждом сервере, на котором должно работать ваше приложение.

0 голосов
/ 17 июня 2010

Шаблон MVC фокусируется на ответственности за управление данными и потоками.Кто может обрабатывать данные и путь перенаправления потока.Независимо от того, как реализовать слой представления (используя Smarty или нет), ваше представление не должно изменять данные или напрямую управлять рабочим процессом.

0 голосов
/ 17 июня 2010

Вы должны иметь в виду, что MVC - это просто шаблон. Это, на мой взгляд, это образ мышления. Все зависит от вас, если вы используете синтаксический анализатор шаблонов в MVC, если вы сохраняете логику и представление вашего приложения раздельными.

Я предпочитаю парсер, который просто разбирает PHP. У него есть несколько преимуществ (нет необходимости изучать конкретный язык шаблонов, немного быстрее, потому что на самом деле ничего анализировать не нужно).

0 голосов
/ 17 июня 2010

Ну, в моих случаях система шаблонов - это мое "представление".Он полностью тупой и говорит с «контроллером», который проверяет ввод и генерирует вывод и тому подобное.

0 голосов
/ 17 июня 2010

Это нормально, чтобы использовать оба. Шаблонирование относится только к представлениям в вашем приложении.

Ваши данные все еще поступают из модели и контроллера, которые передают значения и тому подобное в механизм шаблонов, который включает в себя ваши файлы представлений и отображает их, передавая ваши данные, чтобы они могли отображаться в ваших представлениях.

0 голосов
/ 17 июня 2010

Templating - это инструмент, который вы можете использовать в View части MVC (Model-View-Controller).

  • Модель представляет ваши данные
  • Контроллер"отображает" действия интерфейса пользователя на операции с данными
  • Просмотр представляет данные пользователю (здесь может пригодиться инструмент для заманчивости)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...