2009-12-21 12 views

Odpowiedz

14

Skopiuj /cake/libs/controller/pages_controller.php do swojej /app/controller/ katalogu i wykonaj jedną z następujących czynności:

  • Dodaj linię pod koniec display() aby przełączyć układ if „home” jest wymagane:
    if ($page == 'home') $this->layout = 'homepage';
  • Tworzenie metoda home() (lub nazwana tak jak lubisz), w której ustawiasz $this->layout i zmieniasz trasę / w /app/config/routes.php, aby użyć tej nowej metody.

Edit:
Podsumowując, trzeba jakąś niestandardową metodę, w której możesz ustawić $this->layout = 'homepage', to wszystko. Możesz to zrobić w dowolnym ze swoich kontrolerów w dowolnym momencie, ponowne użycie PagesController jest najwygodniejszym i najbardziej konwencjonalnym sposobem na zrobienie tego w Cake.

+0

Nie nadpisuje klasy trochę mądrzej. Domyślam się również, że '$ this-> layout' może być wywołane z innej funkcji, czegoś' init'-like. – Franz

+2

Właściwie nie potrzebujesz nawet oryginalnego 'PagesController' - możesz użyć tras do wskazania niestandardowego kontrolera i ustawić' $ this-> layout' stamtąd –

+0

@Franz Co masz na myśli przez "nadpisywanie"? – deceze

1

Powyższa odpowiedź jest już nieaktualna, ale daje właściwe podejście.

W nowoczesnych wersjach CakePHP, kontroler prosi o dokonywanie jest już obecny i jest:

/app/Controller/PagesController.php 

miałem szablon o nazwie „loggedoff” i dodał, to w następujący sposób, tuż przed komendą $this->render() (w przybliżeniu linia 73).

$this->layout = 'loggedoff'; 
0

Działa to dobrze:

class RegistrationsController extends AppController { 
    public $helpers = array('Html', 'Form', 'Time'); 
    public $components = array('Session'); 

    public function login() { 
     $this->layout = 'empty'; 
    } 
} 

Wystarczy ustawić żądany układ w funkcji regulatora.

Powiązane problemy