Отсутствует шаблон: ошибка: представление для MyController :: action () не найдено.используя пользовательский класс View - PullRequest
0 голосов
/ 22 мая 2019

Получение ошибки при использовании пользовательского Представления класса:

Требование: Я хочу разделить некоторые из моих входов представления в другой класс представления, но также я хочурасширить класс AppView.php, предоставляемый CakePHP по умолчанию.

Проблема: Когда я добавляю этот класс представления в функцию действия моего контроллера, все вызовы ajax переходят в src/Template/My/ajax/action.ctp до этого, когдаЯ не добавлял пользовательский класс представления в действие, он пытался найти шаблон в src/Template/My/action.ctp, который является желаемым путем ctp.

Вот код, который я использовал:

MyController.php

public function action()
{
    # When I comment below line, everything works properly
    $this->viewBuilder()->setClassName(\App\View\MultiFormatView::class);

    # code ...
}

MultiFormatView.php

<?php

namespace App\View;

use Cake\View\View;

class MultiFormatView extends AppView
{

    /**
     * Returns class for multiple document formats
     *
     * @param  string $filename Filename to get class for.
     * @return string
     */
    public function getFormatIconClass($filename)
    {
        $fileinfo = pathinfo($filename);

        return sprintf('file-%s', $fileinfo['extension']);
    }
}

Любое решение для этого?

Заранее спасибо.

...