CakePHP - 教程ACL扩展

时间:2014-03-27 09:53:50

标签: php cakephp

我尝试扩展教程Simple ACL控制的应用程序(enter link description here)。我想要添加表类别,因此表格是:

CREATE TABLE users (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL UNIQUE,
password CHAR(40) NOT NULL,
group_id INT(11) NOT NULL,
created DATETIME,
modified DATETIME
);


CREATE TABLE groups (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
created DATETIME,
modified DATETIME
);


CREATE TABLE posts (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
user_id INT(11) NOT NULL,
category_id INT(11) NOT NULL,
title VARCHAR(255) NOT NULL,
body TEXT,
created DATETIME,
modified DATETIME
);

CREATE TABLE categories (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL
);

现在我在app / View / Posts和app / View / Categories中添加了add.ctp,edit.ctp,index.ctp和view.ctp。登录后可以访问这些方法。但现在我想按类别显示非登录用户的菜单和帖子。单击主菜单中的Category1后,它将仅显示Category1中的帖子。像这样:

Main menu: **Category1** | Category2 | Category3

  Title of post1 in Category1
  Body of post1 in Category1

  Title of post2 in Category1
  Body of post2 in Category1
  ..........

Main menu: Category1 | **Category2** | Category3

  Title of post1 in Category2
  Body of post1 in Category2

  Title of post2 in Category2
  Body of post2 in Category2
  ..........

我不明白该怎么做。将一些.ctp文件添加到app / View / Posts?或者是其他东西?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

这将允许所有在控制器中输入的方法可供非登录用户使用。

PostsController中的

public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow(array('methods','in-my-controller','which-will-be-allowed-for-not-logged'));
}

编辑:

public function yourmethod($categoryId = null) {
    $posts = $this->Post->find('all', array(
        'conditions' => array(
            'Post.category_id' => $categoryId
        )
    ));
    $this->set(compact(posts));
}

并在浏览器中访问 page.com/posts/yourmethod/2

在视图文件中,您将获得用于访问数据的变量 $ posts

当然,它尽可能简化。