Как мне проверить, работает ли CakePHP Console? - PullRequest
3 голосов
/ 10 апреля 2011

У меня есть консольная оболочка CakePHP, которая работает нормально, пока Model->afterFind() не попытается добавить некоторые данные к результатам, включая добавление ссылок, которые, кажется, не работают при вызове из консоли.

Есть ли способ проверить функцию обратного вызова Model->afterFind(), вызывается ли она из консольной оболочки, чтобы я мог пропустить неприятный раздел, который мне больше не нужен?

Спасибо, Ян

Ответы [ 2 ]

5 голосов
/ 10 апреля 2011

Я не слишком уверен, есть ли способ Cake сделать это, но вы можете сделать это с помощью обычного PHP

 if(php_sapi_name() == 'cli' && empty(getClientIP())) {
      //running via CLI
 } else {
      //running normally
 } 
1 голос
/ 11 апреля 2011

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

С учетом этого, уровень модели CakePHP вообще не знает о контексте выполнения.Одним из решений будет решение этой проблемы путем передачи флага на уровень модели из оболочки.т.е.:

В верхней части app_model.php:

var $isShellContext = false;

Затем в вашей оболочке:

$this->Model->isShellContext = true;

А затем в Model-> afterFind ():

if(!$this->isShellContext) {
   // add links, etc
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...