【问题标题】:How to use templates across APIs in ATK?如何在 ATK 中跨 API 使用模板?
【发布时间】:2012-08-06 03:04:51
【问题描述】:

我已经关注了视频商店和 Jobet 示例,我正在尝试创建管理员 ./admin 子目录中的接口。但是,我想使用模板,但不确定是否需要创建一个新的模板目录,即 ./admin/templates/ 或者我可以使用默认模板,即 ./templates/default/ 由主要API?

以下是网站的控制流程:

1) /admin/index.php

2) /admin/lib/AdminFrontend

在 /admin/page/index.php 里面设置了一个登录页面并调用了 defaultTemplate() 函数:

function defaultTemplate(){
    return array('page/login');
}

但是,我收到错误消息“在所有者的模板中找不到 Spot”。

我尝试使用 AdminFrontend 中的 addlocation() 函数来添加根模板 (.template/default/),但无法正常工作。

$this->addLocation('../', array( 'template' => array('templates'),
   'php' => 'lib' )
)->setParent($this->pathfinder->base_location);

所以没有找到登录模板,但我不确定 atk 在哪里寻找模板或如何更改它。

从 Roman 的帖子看来,任何新的 API,例如admin,出于安全原因需要一个新的模板目录,因此普通用户和管理界面之间不会共享任何页面/模板。

in ATK4 Can I define a different template from frontend to back end?

感谢您的建议。

【问题讨论】:

  • 通过在 ./admin 目录中创建本地模板目录使其工作,这样我现在有:./admin/template/default, ./admin/template/default/page, . /admin/template/default/view等

标签: php frameworks atk4


【解决方案1】:

不确定,但认为您可能想将子目录“admin”作为第一个参数添加到 addLocation 类似的东西

 $this->addLocation('admin',array(
                'page'=>array(
                     'page',
                    ),
                'template'=>array(
                    'templates',
                    ),
                ))
        ->setParent($this->pathfinder->base_location);

然后应该将 /admin/templates 添加到搜索模板的路径,并将 /admin/page 添加到它搜索页面的路径。

您也可以在仅用于管理员的不同 atkroot 下再次安装 atk4 文件夹。根据您的虚拟主机,您可以指向一个子域,例如admin.yoursite.com 位于管理页面,但它与您的用户页面完全分开,但这是否可行取决于您是否有很多公共页面、视图和模型将在用户和管理员之间共享,或者您是否很高兴将您需要的那些复制到管理文件夹中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-28
    • 2015-09-07
    • 1970-01-01
    • 2015-07-20
    • 2021-12-06
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多