Представьте, что у вас есть следующий сценарий:
В вашем приложении у вас есть несколько «Commentable» моделей. Комментарии отображаются в
идентичным образом и может таким образом использовать тот же шаблон. В представлении по умолчанию
виджет комментариев, отображаются два последних комментария со ссылкой для загрузки оставшегося X
Комментарии.
Виджет также имеет форму (например, текстовое поле, которое отправляется по клавише ввода) для добавления нового
комментарий к модели.
Учитывая приведенное выше требование, где находится разумное место для генерации ссылок, необходимых для работы формы и load-link?
Должны ли генерироваться ссылки в представлении, которое вызывает шаблон, вместе с моделью Commentable
? т.е.
<?php
echo $this->partial('path/to/template/comments.phtml', array (
'add-link' => $this->url($params, $routeName),
'load-link' => $this->url($params, $routeName),
'comments' => $this->model->getComments()
);
Допустимо ли вообще запрашивать Commentable
эти ссылки? Т.е. в шаблоне comments.phtml
:
<div class="comments">
<div class="loadLink">
<a href="<?php echo $this->comments->getLoadLink() ?>">
<?php echo sprintf('Show all %d comments', count($this->comments)); ?>
</a>
</div>
<div class="container">
<?php
foreach ($this->comments->getFirst(2) as $comment) {
echo $this->partial('comment.phtml', array('comment' => $comment);
}
?>
</div>
<div class="addComment">
<form action="<?php echo $this->comments->getAddLink() ?>" method="post">
<div>
<textarea class="autogrow" name="comment"
placeholder="Write a new comment" rows="1" cols="80">
</textarea>
</div>
</form>
</div>
</div>
Поскольку MVC настаивает на том, что представление может взаимодействовать с контроллерами, рассматривается ли создание маршрута как способ «связи» с контроллером, даже если он не делает это объектно-объектным способом?