/ / Prečo volania Ajax nenačítajú rozloženie v CakePHP 2.3 - cakephp, cakephp-2.0, cakephp-2.1, cakephp-2.3

Prečo ajax volania nenahrádza rozloženie v CakePHP 2.3 - cakephp, cakephp-2.0, cakephp-2.1, cakephp-2.3

Zaujímalo by ma, prečo keď používam jquery $.load funkcia alebo nejake zapojenie ako napr fancybox na dynamické načítanie obsahu na webe sa nenačíta laika, ale iba pohľad, akoby to bol prvok.

môj $.load() zavolá akciu ovládača, akoby to bol normálny odkaz, napríklad:

$("#demo").load("http://"+ document.domain +"/tables/users/edit/", {input : data}, function(dat){
//whatever
});

Toto nie je niečo, čo by sa mi osobne nepáčilo, takto sa vyhýbam vytváraniu prvkov a nazývaniu ich pomocou $this->render("/Elements/xxxx", false); od mojich kontrolórov.

Chcem vedieť, či je to správny spôsob práce, alebo či sa jedná o nejaký podvod alebo chybu cakephp.

Ako by sme mali zaobchádzať s týmto typom obsahu, ktorý nie je správnym „zobrazením“ (pretože nebude mať rozloženie, hlavičky ... atď.), Ale „prvkom“ načítaným dynamicky? Ako pohľad? Ako prvok?

Vďaka.

odpovede:

2 pre odpoveď č. 1

Začiarknite /Layouts/ajax.ctp, toto je rozloženie, ktoré sa vykreslí pre volania ajax. Spravidla nechcete mať pri volaní Ajaxu celú hlavičku a pätu okolo prvku, ktorý požadujete.


0 pre odpoveď č. 2

Burzum je na dobrej ceste.

Ovládač načíta predvolené rozloženiepokiaľ mu nepovieš, aby používal /Layouts/ajax.ctp. Vo svojej editovacej funkcii teda chcete prepínať rozloženie podľa toho, ako sa táto funkcia volá. Napríklad:

if($this->request->is("ajax")){
$this->layout = "ajax";
}// else use controller default...or specify another layout to use here.