我尝试扩展教程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?或者是其他东西?谢谢你的帮助。
答案 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 。
当然,它尽可能简化。