CakePHP3.5 загрузить другой файл шаблона

В моем PhotoalbumsController я пытаюсь загрузить другой макет, когда вызывается действие imgToAlbum.

<?php
namespace App\Controller\Admin;

use App\Controller\AppController;
use Cake\ORM\TableRegistry;
use Cake\Http\ServerRequest;
use Cake\Event\Event;

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

    ...

    public function imgToAlbum()
    {
        ...        
        $this->viewBuilder()->setLayout('ajax');
        $content = 'test';
        $this->set(compact($content));
    }

Я получаю эту ошибку:

Ошибка: представление для PhotoalbumsController::imgToAlbum() не найдено.

Убедитесь, что вы создали файл: "Admin/Photoalbums/img_to_album.ctp" по одному из следующих путей

Я также пытался $this->viewBuilder()->setTemplate('ajax'); а также $this->viewBuilder()->template('ajax');, Но они тоже не работают.

Я использую тот же трюк в моем AppController для моего бэкэнда, то есть это работает:

public function beforeRender(Event $event) 
{
    parent::beforeRender($event);
    if($this->request->getParam('prefix') and $this->request->getParam('prefix') == 'admin') {
        $this->viewBuilder()->setLayout('admin');
    }
}

Что мне здесь не хватает.

1 ответ

Решение

Это должно сделать трюк:

$this->autoRender = false;
Другие вопросы по тегам