Мне кажется, что вы нарушаете лучшие практики MVC, если ваш бизнес (модельный) уровень оказывает неблагоприятное воздействие при работе в разных контекстах.Все, что вы помещаете в Model-> afterFind (), не должно зависеть от того, как выполняется приложение.
С учетом этого, уровень модели CakePHP вообще не знает о контексте выполнения.Одним из решений будет решение этой проблемы путем передачи флага на уровень модели из оболочки.т.е.:
В верхней части app_model.php:
var $isShellContext = false;
Затем в вашей оболочке:
$this->Model->isShellContext = true;
А затем в Model-> afterFind ():
if(!$this->isShellContext) {
// add links, etc
}