2011-07-03 35 views
5

Bu uzantıyı ayrıştırarak JSON isteklerini uzun zamandır ele alan bir denetleyici yöntemim var, ancak şimdi bunu etki alanı ajax'e açmam gerekiyor, böylece bunu ayrıştırarak bir JSONP varyantı sunmak istiyorum uzantısı da.CakePHP, uzantılar ve düzenler

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

Şimdiye kadar her şey iyi, ama sonuç hale getirildiklerinde mutluluk biter: Zaten routes.php dosyayı güncelledik. .json uzantısı, otomatik olarak json/default.ctp düzenini alırken, .jsonp içeriği, belirli olmayan varsayılan düzeni (ve gereksiz HTML içeriğinin tamamını) kullanmaya devam eder. Yanıt içeriği türünü json ve js olarak ayarlamak için RequestHandler::setContent() kullanmayı denedim, ancak belirli bir düzen dizini için çağrıyı tetikleyen şey bu görünmüyor.

İçeriğe özel düzen dizininin çağrıldığını neyin belirlediğini bilen var mı? jsonp/default.ctp oluşturmayı denedim ve JSONP sonucumla bir js/default.ctp düzeni oluşturmayı denedim, ancak hiçbir şey işe yaramıyor gibi görünüyor. Sadece normal varsayılanı aldım.

Uzantıların/içerik türünün bu düzen dizinlerine nasıl eşlendiğine ilişkin tüm bilgiler çok takdir edilecektir.

cevap

1

geçici olarak açıkça layoutPath değerini ayarlayarak bu çözdük:

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

Bu daha iyi bir çözüm olmalıdır şeylerden biri gibi hissediyor, ama belki budur. Bir başkasının kekin otomasyonu içeren bir çözümü olduğu umuduyla soruyu biraz açık bırakacağım.