0

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

下面是网站的控制流程:

1) /admin/index.php <- 实例化 /admin/lib/AdminFrontend

2) /admin/lib/AdminFrontend <- 调用 /admin/page/index.php (隐式)登录管理员。

在 /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,例如管理员,出于安全原因都需要一个新的模板目录,因此普通用户和管理员界面之间不会共享任何页面/模板。

在 ATK4 中,我可以从前端到后端定义不同的模板吗?

谢谢你的建议。

4

1 回答 1

0

不确定,但认为您可能想将子目录“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,但它会使其与您的用户页面完全分开,但这是否可行取决于您是否有很多公共页面、视图和模型这将在用户和管理员之间共享,或者您是否愿意将所需的内容复制到管理员文件夹中。

于 2012-08-09T13:31:19.593 回答