Как добавить новый макет для панели администратора - PullRequest
0 голосов
/ 23 марта 2019

В Zend Expressive макет «по умолчанию» помещается в папку «шаблоны».

Я бы хотел добавить папку «admin» в папку «templates» следующим образом:

  • Шаблоны
    • админ
      • приложение
        • админ-page.phtml
      • ошибка
        • 404.phtml
        • error.phtml
      • расположение
        • default.phtml
    • по умолчанию
      • приложение
        • домашняя page.phtml
      • ошибка
        • 404.phtml
        • error.phtml
      • расположение

Я пытался с помощью уроков Zend Expressive добавить новый макет, но безуспешно для меня ...

class AdminPageHandler implements RequestHandlerInterface
{
    private $template;


    public function __construct(TemplateRendererInterface $template)
    {
        $this->template = $template;
    }

    public function handle(ServerRequestInterface $request) : ResponseInterface
    {

        $data = [
            'admin' => 'layout::admin',
            // or 'layout::admin',
            // or 'layout::alternative',
        ];
        $content = $this->template->render('pages::admin-page', $data);
        return new HtmlResponse($content);
    }
}

Как добавить новый макет для панели администратора?

Я хотел бы добавить новый макет для моей панели администратора, поскольку скрипт HTML отличается от моего домашнего приложения.

1 Ответ

1 голос
/ 15 апреля 2019

Пути к шаблонам можно найти в классе ConfigProvider => __invoke, в разделе «templates» => «paths» или в методе getTemplates (). Там вы должны добавить новый путь:

/**
     * Returns the templates configuration
     */
    public function getTemplates(): array
    {
        return [
            'paths' => [
                'app'    => [__DIR__ . '/../templates/app'],
                'error'  => [__DIR__ . '/../templates/error'],
                'layout' => [__DIR__ . '/../templates/layout'],
                'admin'  => [__DIR__ . '/../templates/admin'],
            ],
        ];
    }

тогда ваш обработчик должен выглядеть примерно так

public function handle(ServerRequestInterface $request) : ResponseInterface
    {

        $data = [
            'admin' => 'layout::admin',
            // or 'layout::admin',
            // or 'layout::alternative',
        ];
        $content = $this->template->render('admin::app/admin-page', $data);
        return new HtmlResponse($content);
    }
...