我正在尝试第一次学习CakePHP(我通常只是直接编写PHP代码),而我开始使用他们主持的“官方”博客教程: http://book.cakephp.org/1.3/en/The-Manual/Tutorials-Examples/Blog.html
到目前为止,我已经设置了一个虚拟主机(在OS X 10.8.2上),并使用CakePHP的默认索引页来确保它正确地从数据库中读取,app / tmp文件夹可以递归写入Apache等。
当我尝试在设置初始帖子视图后立即关注博客时遇到问题,并且它表示您现在可以查看帖子(将“www.example.com”调整为我的本地ServerName)'cakeblog /帖/指数”。我很确定我有某种mod_rewrite问题,但我无法弄清楚是什么。 发生这种情况时,我的Apache错误日志是:
[Thu Feb 14 09:18:10 2013] [error] [client 127.0.0.1] File does not exist: /Users/bailey/Sites/cakeblog/posts
[Thu Feb 14 09:18:10 2013] [error] [client 127.0.0.1] File does not exist: /Users/bailey/Sites/cakeblog/favicon.ico
我知道我的webroot文件夹中的favicon存在/ Users / bailey / Sites / cascade / extranet-cake / app / webroot。 如果我理解路由权限,cakeblog / posts / index 应该是Post PostsController的控制器,而/ index应该是PostsController中的action /方法“index()”。所以似乎没有认识到控制器?
我按照博客教程设置的代码是:
(应用程序/型号/ post.php中):
<?php
/*
Model: represents a data model (object).
Examples -> a blog, a post, a comment on a post
*/
class Post extends AppModel
{
}
?>
(应用/控制器/ PostsController.php):
<?php
/*
Plays with Posts Model and gets work done.
- function "foo()" means that the function is accessed by
going to DOMAIN/posts/foo
*/
class PostsController extends AppController
{
public $helpers = array('Html', 'Form');
// An action!
// www.example.com/posts/index => listing of all posts
/*
Sets the view variable called ‘posts’ equal to the return
value of the find('all') method of the Post model.
*/
public function index()
{
$this->set('posts', $this->Post->find('all'));
}
}
?>
(应用/视图/帖子/ index.ctp):
<!-- /app/View/Posts/index.ctp -->
<h2> Blog Posts </h2>
<table>
<tr>
<th> ID </th>
<th> Title </th>
<th> Date Created </th>
</tr>
<!-- Output the actual posts -->
<?php
foreach ($posts as $post)
{
/* Data ~ $post[ModelName][VariableName] */
$id = $post['Post']['id'];
/*
"$this->Html" ~ a Helper
link() generates an HTML link with given title and URL
*/
$titleLink =
$this->Html->link($post['Post']['title'],
array('controller' => 'posts', 'action' => 'view', $post['Post']['id']));
$dateCreated = $post['Post']['created'];
$out = "<tr>
<td>$id</td>
<td>
$titleLink
</td>
<td>$dateCreated</td>
</tr>";
echo $out;
}
unset($post);
?>
</table>
这是我第一次真正看到CakePHP而我无法在任何其他帖子中找到解决方案,除了因怀疑mod_rewrite问题的间接原因。 任何人都对我缺少的东西有所了解?我也可以根据要求发布我的httpd.conf文件。
答案 0 :(得分:0)
[解决]
愚蠢的错误 - 事实证明我使用app / webroot以外的子文件夹作为webroot。一旦我改变它,它工作正常。
如果我想使用与默认值不同的webroot,则可以选择JeremyHarris在上面的评论中并在CakePHP文档中提供支持:
http://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Installation.html
感谢大家的帮助!