2

我在我的 frontendAPI.php 文件上设置了一个 CRUD 区域(测试我的模型)......我什至设法保护它。我想以正确的方式做到这一点...我想为管理员建立一个单独的目录/页面。请就此提出建议。

4

1 回答 1

4

这仍然是新的,但我正在尝试对新闻页面做同样的事情,我认为我已经让登录部分工作但遇到了 CRUD 问题(很快会在上面发布一个问题) - 我有一个表格可以填充来自 rss 提要的数据(但将首先使用 CRUD 手动填充),然后在前端有一个页面以使用视图来格式化每个新闻故事来提取详细信息。

  1. 创建一个名为 /page/Admin 的新目录
  2. 在此处基于函数创建一个新文件,例如 news.php 包含

    class page_admin_news extends Page {
    function init(){
        parent::init();
        $p=$this;
    
        $crud=$p->add('CRUD');
    
        $g=$crud->setModel('News');
        if($crud->grid)
               $crud->grid->addPaginator(30);
        }
    }
    
  3. 在 Frontend.php 中,您需要启用登录 - 对于仅限管理员访问,BasicAuth 可能就足够了,但也有一些类可以使用数据库来获取用户名和密码信息,例如会员站点 - 这是基本的。// 如果你想限制对你的页面的访问,使用 BasicAuth class $auth=$this->add('BasicAuth') ->allow('demo','demo') ;

  4. 需要修改 Frontend.php 以启用无需登录即可查看的页面

    $auth->allowPage('index');
    $auth->allowPage('news');
    $auth->allowPage('links');
    $auth->allowPage('About');
    if (!$auth->isPageAllowed($this->api->page))
    {
       $auth->check();
    }
    
  5. 同样在 Frontend.php 中,如果登录,您需要创建一个不同的菜单。注意登录和注销页面实际上并不存在。

    if ($auth->isLoggedIn())
    {
      $this->add('Menu',null,'Menu')
        ->addMenuitem('News','admin_news')
        ->addMenuitem('logout')
      ;
    } else {
      $this->add('Menu',null,'Menu')
        ->addMenuitem('News','news')
        ->addMenuitem('Links','links')
        ->addMenuItem('About')
        ->addMenuItem('Login')
        ;
    }
    
  6. 当您登录时,默认情况下它会转到 page/index.php,因此如果您希望它在登录时重定向到特定页面,那么您可以将其添加到 page/index.php

    class page_index extends Page {
    function init(){
      parent::init();
      $p=$this;
    
      if($this->api->auth->isLoggedIn())
        $this->api->redirect('admin_news');
    

希望有帮助。

特雷夫

于 2011-09-11T14:30:02.190 回答