2016-08-09 32 views
1

Ich weiß, wie Elemente verwendet werden, um mehrere Ansichten im Layout zu rendern.mehrere Ansichten in einem Layout

Was ich fragen möchte ist, dass ich sagen, ich habe eine Vielzahl von Controllern für mehrere Dinge. Zum Beispiel UsersController, ArticlesController und BooksController. Angenommen, ich möchte die fünf neuesten Daten von jedem Controller abrufen und sie in ein Layout wie auf einer Homepage einfügen.

Wie machst du das?

+0

sehen Während die akzeptierte Antwort sicherlich sinnvoll ist, das klingt sehr ähnlich wie ein Anwendungsfall für [view cells] (http://book.cakephp.org/3.0/en/views/cells.html). –

Antwort

1

PagesController.php

class PagesController extends AppController { 
    public function initialize() { 
     parent::initialize(); 

     $this -> loadModel('Users'); 
     $this -> loadModel('Articles'); 
     $this -> loadModel('Books'); 

    } 

    public function home() { 

     $users = $this -> Users -> find('all') -> order(['Users.id' => 'desc']) -> limit(5); 
     $articles = $this -> Articles -> find('all') -> order(['Articles.id' => 'desc']) -> limit(5); 
     $books = $this -> Books -> find('all') -> order(['Books.id' => 'desc']) -> limit(5); 

     $this -> set(compact('users', 'articles', 'books')); 
    } 
} 

Jetzt können Sie die letzten 5 Nutzer, die Artikel und Bücher in Pages/Home.ctp

0

Sie sollten Daten in verschiedenen Variablen für verschiedene Controller ziehen. und verwende diese Variablen in deinem Layout.