2011-07-03 16 views
5

Mam metodę kontrolera, która od dawna obsługuje żądania JSON przez analizowanie tego rozszerzenia, ale teraz muszę otworzyć go do domeny krzyżowej ajax, więc chciałbym zaoferować wariant JSONP, analizując to również rozszerzenie. Ja już aktualizowany mój routes.php plik:CakePHP, rozszerzenia i układy

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

Jak dotąd wszystko jest dobrze, ale szczęście kończy się, gdy wyniki są renderowane. Chociaż rozszerzenie .json automagicznie odbiera układ json/default.ctp, zawartość .jsonp nadal przyjmuje niespecyficzny układ domyślny (i całą jego niepotrzebną treść HTML). Próbowałem użyć RequestHandler::setContent(), aby ustawić typ zawartości odpowiedzi zarówno na json i js, ale wydaje się, że to nie jest to, co wyzwala wywołanie do danego katalogu układu.

Czy ktoś wie, co decyduje o tym, który konkretny katalog układu nazywa się? Próbowałem tworzyć jsonp/default.ctp i próbowałem utworzyć układ js/default.ctp z moim wynikiem JSONP, ale nic nie wydaje się angażować. Właśnie dostaję normalne domyślne.

Dowolny wgląd w to, jak rozszerzenia/typ zawartości są mapowane do tych katalogów układu, byłby bardzo doceniany.

Odpowiedz

1

ja tymczasowo rozwiązać ten jawnie ustawienie wartości layoutPath:

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

Ten czuje się jak jedna z tych rzeczy, tam gdzie musi być lepszym rozwiązaniem, ale być może to jest to. Pozostawię pytanie otwarte na trochę w nadziei, że ktoś inny ma rozwiązanie, które obejmuje automagic Cake.