У меня была похожая проблема, я думал, что сообщу о своем решении, если другие столкнутся с той же проблемой.
Я не использовал страницы, но у меня были "члены" контроллера:
<?php
class MembersController extends AppController {
var $name = 'Members';
var $helpers = array('Html','Javascript','Form','Time');
var $uses = array();
function index() {
// Works, will load the ajax.ctp layout
// http://localhost/members/index
$this->layout = 'ajax';
}
function signup() {
// Does not work, loads the default.ctp layout
//http://localhost/members/signup
$this->layout = 'ajax';
}
}
?>
Функция index () корректно загружала макет ajax, но signup () сохраняла загрузку по умолчанию. Оказывается, ошибка была в том, что у меня не было view / signup.ctp . Как только я добавил, что он загрузил правильную разметку. Это была рассеянная ошибка, но она оставила меня лающим не на том дереве, потому что знаки указывали на проблему с макетом, а не на представление.