Zend Framework, MVC, Ajax и Cli / Cron - PullRequest
       30

Zend Framework, MVC, Ajax и Cli / Cron

1 голос
/ 21 сентября 2011

Я работаю над приложением на основе Zend Framework и инициализирую MVC при начальной загрузке. Теперь я добавляю слой AJAX в приложения, поэтому в действии контроллера я отключаю рендеринг представлений и начинаю подвергать сомнению мой подход к запуску MVC в начальной загрузке. Мне также нужно добавить некоторую поддержку cron / cli в приложение, поэтому мне также нужно остановить рендеринг MVC для этой части. Короче говоря, бывают ситуации (AJAX, Cli, Cron и т. Д.), Когда нам не нужен MVC, но он изначально выполняется как часть начальной загрузки, а затем мы принудительно останавливаем его.

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

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

почему вам не нужен MVC для AJAX или CLI? Этот переключатель контекста является причиной, по которой существует MVC: сохраняйте модель и / или контроллер, но используйте другое представление.

Но, возможно, вы могли бы создать другой файл начальной загрузки (вместо index.php), скажем, cli.php и ajax.php, чтобы избежать некоторых вещей, которые вы просто инициализируете для «обычных» запросов (навигация, маршруты, макет + просмотр управления, acl, ..). В настоящее время я не использую другой файл начальной загрузки, потому что AJAX идеально вписывается в мою текущую структуру (за исключением макета, но для этого есть contextSwitch).

0 голосов
/ 21 сентября 2011

Давайте очень кратко рассмотрим запуск приложения в index.php:

$application->bootstrap() // here you load and configure your resources
            ->run();      // here you launch the request handling, dispatching, mvc, etc.. 

, когда вы хотите использовать свое приложение в контексте CLI, вам нужно будет только запустить его, а не запускатьприложение MVC.Просто пропустите ->run().

Конечно, вы можете просто инициализировать только ресурсов, которые вам нужны в вашем скрипте:

$app->bootstrap('cachemanager')->bootstrap('db');

Для Ajax, если вам нужны контроллерыи действия, вам нужно то, что вы называете "MVC".Это недавний SO вопрос , где вы можете найти более подробную информацию о понятии "контроллеры Ajax".

...