2017-08-14 5 views
0

Ich bin ein neuer Student in CakePHP 3 Bitte lösen Sie mein Problem. Dies ist meine Controller-Datei:So erstellen Sie Vorlage in CakePHP 3.x

DirectUseController.php

<?php 
class DirectUseController extends AppController { 
    function index() { 
     $this->layout = 'directuse'; 
    } 
} 
?> 

Das ist meine Layout-Datei ist:

directuse.ctp

<!DOCTYPE html> 
<html> 
    <head> 
     <title> 
      <?= $this->fetch('title') ?> 
     </title> 
     </head> 
    <body> 
    <a href="#"> Bootstrap </a> | <a href="#"> Foundation </a> | <a href="#"> Materilize </a> 
    <br><br> 
    Copyright 
    <br><br> 
    </body> 
</html> 

Das ist meine Indexdatei im Ordner der direkten Verwendung index.ctp

<section id="mainBody"> 
     hello 
</section> 

und meine Ordnerstruktur ist:
enter image description here

Was bin ich?

+0

Welche Version von Kuchen verwenden Sie? Wenn Sie die neueste Version> 3.4 '$ this-> layout = 'directuse' verwenden, wird ein Fehler ausgegeben. In diesem Fall müssen Sie '$ this-> viewBuilder() -> setLayout ('directuse');' verwenden. – CodeWhisperer

Antwort

2

Ihr Layout soll vermutlich die irgendwo ist:

echo $this->fetch('content'); 

Wenn das Problem nicht lösen, Sie gehen präziser zu sein, haben, was das Problem ist.

0
  • CakePHP priorisiert convention über Konfiguration, so versuchen Sie Ihren Controller-Namen zu ändern in direkter u se s-Controller, ändern auch Ihr Layout Ordnernamen (bis DirectUses) und vielleicht auch Ihr Modell (Kuchen backen leicht helfen), ich weiß nicht Ihre [Tabellenname in der Datenbank] aber es sollte Plural sein und in Kleinbuchstaben (directeduses)

  • Für Ihre Vorlage Greg Schmidt ist right

0

In Ihrem Layout-Datei müssen Sie diese verwenden:

<?= $this->Flash->render(); ?> 
<?= $this->fetch('content'); ?> 

Ich höre am liebsten <html> und <body> Tags innerhalb der default.ctp oder directuse.ctp Layout hinzuzufügen. Auf diese Weise müssen Sie Ihren HTML-Code nicht jedes Mal neu erstellen. Dadurch wird Ihr Code viel sauberer.