CakePHP, расширения и макеты - PullRequest
5 голосов
/ 03 июля 2011

У меня есть метод контроллера, который долго обрабатывал JSON-запросы, анализируя это расширение, но теперь мне нужно открыть его для междоменного ajax, поэтому я бы хотел предложить вариант JSONP, также анализируя это расширение.Я уже обновил свой routes.php файл:

Router::parseExtensions( 'json', 'jsonp' );

Пока все хорошо, но счастье заканчивается, когда результаты отображаются.В то время как расширение .json автоматически выбирает макет json/default.ctp, контент .jsonp продолжает принимать неспецифический макет по умолчанию (и весь его ненужный HTML-контент).Я попытался использовать RequestHandler::setContent(), чтобы установить тип содержимого ответа и json, и js, но, похоже, это не то, что инициирует вызов в заданный каталог макета.

Кто-нибудьзнаете, что определяет, какой каталог макета для конкретного контента называется?Я попытался создать jsonp/default.ctp, и я попытался создать js/default.ctp макет с моим результатом JSONP, но, похоже, ничего не помогло.Я просто получаю обычное значение по умолчанию.

Любое понимание того, как расширения / тип контента отображаются в эти каталоги макетов, будет высоко ценится.

1 Ответ

1 голос
/ 04 июля 2011

Я временно решил это, явно установив значение layoutPath:

$this->layoutPath = $params['url']['ext'];

Это похоже на одну из тех вещей, где должно быть лучшее решение, но, возможно, это оно.Я собираюсь оставить вопрос открытым на некоторое время в надежде, что у кого-то еще есть решение, которое включает в себя автоматику Кейка.

...