如何为管理仪表板添加新布局

时间:2019-03-23 20:56:29

标签: php zend-framework zend-expressive

在Zend Expressive中,布局是“默认”到“模板”文件夹中。

我想将“ admin”文件夹添加到“ templates”文件夹中,如下所示:

  • 模板
    • 管理员
      • 应用
        • admin-page.phtml
      • 错误
        • 404.phtml
        • error.phtml
      • 布局
        • default.phtml
    • 默认
      • 应用
        • home-page.phtml
      • 错误
        • 404.phtml
        • error.phtml
      • 布局
        • default.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 个答案:

答案 0 :(得分:0)

可以在ConfigProvider class => __invoke方法中的“模板” =>“路径”下或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);
    }