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ď č. 1Zač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.