Самый простой ответ: вы уже почти MVC. Вы используете Zend_Controller_Action, чтобы получить некоторые данные и передать их на слой представления, где вы отображаете HTML. Единственная недостающая часть - это ваша модель, которая перепутана между контроллером и вашим шлюзом данных (где вы реализовали шаблон шлюза табличных данных, это вещь Zend_Db_Table).
Я дал довольно подробное объяснение в ответе на другой вопрос , как бы я правильно настроил отношения между Контроллером и Моделью. Я также объединил это с формой для обработки ввода данных, фильтрации и проверки. Затем, чтобы объединить некоторые общие функции, я ввел уровень обслуживания между моделью и контроллером.
С помощью контроллера вы выполняете некоторые действия (выводите список всех моих контактов, создаете новый контакт, изменяете контакт), и модель содержит только данные (идентификатор, имя, телефон, адрес). Служба помогает группировать некоторые функции (findContactByName, findContactById, updateContactWithForm).
Если вы знаете, как разделить Контроллер, Режим, Форму и Сервис, ваш контроллер может выглядеть примерно так:
class ContactsController extends Zend_Controller_Action
{
public function indexAction ()
{
if (!$this->hasIdentity()) {
$this->_redirect('login/login');
}
$service = new Application_Service_Contacts;
$contacts = $service->getContacts();
$paginator = $service->getPaginator($contacts);
$this->view->paginator = $paginator;
}
protected function hasIdentity ()
{
return Zend_Auth::getInstance->hasIdentity();
}
}
Это ваш личный вкус, что вы хотите делать в своем контроллере: я бы сказал, что вы вкладываете как можно меньше в свои контроллеры, но вам нужно сохранить контроль. Итак: вызов для получения данных происходит в контроллере, получение этих данных происходит где-то еще. Также: в контроллере происходит вызов для преобразования набора данных во что-то еще, преобразование происходит где-то еще.
Таким образом, вы можете очень быстро изменить результат в контроллерах, если вы предоставили достаточно классов методам обслуживания для извлечения данных. (Обратите внимание, что я перенес Zend_Auth в другую функцию: если у вас есть другие действия, вы можете использовать эту же функцию. Кроме того, если вы хотите что-то изменить в своей аутентификации, у вас есть одно место, где это находится вместо каждого действия в контроллере )