Frage

Ich kann nicht Set title_for_layout im PagesController, die mit CakePHP 1.3 standardmäßig kommt.

Ich verwende den folgenden Code in der Anzeigefunktion:

$this->set('title_for_layout','some title');

Was mache ich falsch?

War es hilfreich?

Lösung

In Ihrem Controller, der entsprechende Wert ist $this->pageTitle.

UPDATE

Oops, wie in den Kommentaren erwähnt, ist dies die 1,2 Lösung. 1.3 Möglichkeiten (nach einiger Forschung) schließen ein:

  1. , dass $title_for_layout Gewährleistung wird im Layout
  2. Echo
  3. Platzieren des $this->set() Code in der Ansicht, anstatt in der Steuerung

Andere Tipps

Wenn Sie 1.2 zu imitieren das Verhalten des Kuchens erhalten möchten, können Sie Folgendes tun:

In Ihrem app_controller, erstellen Sie die folgende Methode:

in app / app_controller.php (Sie benötigen diese Datei zu erstellen, wenn Sie nicht bereits haben)

public $pageTitle;

public function beforeRender() {
    $this->set('title_for_layout', $this->pageTitle);
}

Dann in einem Aktionsmethoden, können Sie dann mit den aktuellen Seitentitel, wie Sie es in 1.2.

public function index() {
    $this->pageTitle = 'Some Title';
}

Die Before () -Methode aufgerufen wird, nachdem Ihre Controller fertige Verarbeitung, aber vor dem Layout gemacht zu werden, so dass Sie auf Setvariablen für das Layout ermöglicht.

In der Aktionsmethode, versuchen Sie dies:

function index()
{
    $this->pageTitle= 'Your Title';
}

Ich dachte, ich auf neue Leute hinzufügen würde diese Lösung zu finden, Sie $this->set('title', $title); in CakePHP 1.3 in der Steuerung und der Titel automatisch gerendert wird tun können.

Sie können mit:

$this->assign('title', 'Some title');

und in CtP:

<title><?= $this->fetch('title'); ?></title>

Es funktioniert in CakePHP 3.0

Für CakePHP 3.x,

können Sie den Rat hier

folgen

Im Wesentlichen

Innerhalb UsersController.php:

$this->set('title', 'Login');

Innerhalb src/Template/Layouts/default.ctp

über den $this->fetch('title');

write:

if (isset($title)) {
    $this->assign('title', $title); 
}

Verwenden beforeRender() statt. Legen Sie die folgenden in AppController:

class AppController extends Controller {
    var $content;

    function beforeRender() {
        $this->set('content',$this->content);
    }            
}

Und in der Steuerung, können Sie einfach tun:

function index() {
    $this->content['title'] = '123'; }

Das wird den Trick.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top