У меня возникла проблема с помощником просмотра действий, когда я пытаюсь вызвать действие из сценария вида. Представление находится в/views/scripts/home, и оно принадлежит HomeController, и я хочу получить доступ к действию из BookController.Zend Framework: Как вызвать действие из представления?
У меня есть следующий код на мой взгляд:
foreach ($this->books as $book) {
if (!empty($book['asin'])) {
$bookObj = $this->action('get-book-by-asin', 'book', null,
array('asin' => $book['asin']));
В getBookByAsinAction() Я хочу, чтобы вернуть переменную $ данных. Как отправить его обратно в ответ на вызов помощника действий?
Я теперь могу сделать foreach через переменную $ books в моем контроллере вместо того, чтобы делать это по-моему, но мне просто интересно. Или, возможно, в будущем я буду использовать Помощник по просмотру действий, когда конкретное действие может создать более полезный повторно используемый контент или «виджетаризованный» контент.
Если я получаю много строк из запроса БД, было бы лучше сделать просто foreach вместо двух? Один foreach был бы в представлении, чтобы правильно отобразить результат, и я должен рассмотреть возможность сделать еще один в контроллере, чтобы проверить, есть ли у книги или нет ASIN, а затем вызвать, например, веб-службы. Это оптимальное решение?
Или лучше использовать Action View Helper описанным образом?
Это против фундаментальных принципов шаблона MVC, лучше реорганизовать ваш код - метод действия не должен возвращать данных, представление не должно иметь доступа к контроллеру. 'getBookByAsin()' принадлежит в пространстве модели или использует помощник вида. – Niko
бизнес-логика, подобная этому, должна произойти задолго до того, как вы достигнете своего мнения. – dqhendricks
просто создайте помощник представления! –