Tüm sitem uygulamalar/görünüm/düzenler/default.ctp'de belirtilen default.ctp düzenini kullanıyorsa, homepage.ctp'yi kullanmak için yalnızca ana sayfa düzenini nasıl değiştiririm ve bırakırım default.ctp kullanarak sitenin geri kalanı?cakephp'de yalnızca ana sayfa düzenini değiştirme
8
A
cevap
14
kopyalayın /app/controller/
dir içine /cake/libs/controller/pages_controller.php
ve aşağıdakilerden birini yapın: 'ev' talep edilmesi halinde
- düzenini değiştirmek için
display()
sonuna doğru bir satır ekleyin:
if ($page == 'home') $this->layout = 'homepage';
- oluştur Bu yeni yöntemi kullanmak için
home()
yöntemini (ya da bununla birlikte adlandırmak istediğiniz)$this->layout
ayarlayıp/
yolunu yeniden rota/app/config/routes.php
.
Düzenleme: Özetle, sen $this->layout = 'homepage'
belirleriz hangi bazı özel yöntemi gerekir
, hepsi bu. Bunu herhangi bir noktada kontrolörünüzde yapabilirsiniz, yeniden kullanmak PagesController
'u Cake'de yapmanın en kullanışlı ve geleneksel yoludur.
1
Yukarıdaki cevap artık güncel değil, ancak doğru yaklaşımı veriyor. CakePHP'de modern sürümlerinde
, o yapmak ister kontrolör zaten mevcutsa ve geçerli:
/app/Controller/PagesController.php
Bir şablon "loggedoff" olarak adlandırılan ve sadece $this->render()
komutundan önce, aşağıdaki gibi bu eklemişti (yaklaşık satır 73).
$this->layout = 'loggedoff';
0
Bu çalışıyor:
class RegistrationsController extends AppController {
public $helpers = array('Html', 'Form', 'Time');
public $components = array('Session');
public function login() {
$this->layout = 'empty';
}
}
Sadece kontrolör işlevinde istediğiniz düzeni ayarlayın.
Sınıfın üzerine biraz daha akıllı yazmıyor. Ayrıca '$ this-> layout' 'init' benzeri bir şeyden başka bir işlevden çağrılabileceğini tahmin ediyorum. – Franz
Aslında, 'PagesController' orijinaline ihtiyacınız yoktur - özel bir denetleyiciyi işaret edecek ve' $ this-> layout 'öğesini buradan –
@ Franz olarak ayarlayabilecek rotaları kullanabilirsiniz. "Üzerine yazma" ile ne demek istiyorsunuz? – deceze