我正试图抓住cakephp。所以我开始使用cakephp演示博客应用程序。我按照本教程的前几个步骤进行操作,当我尝试加载posts控制器时,它说
Missing View
Error: The view for PostsController::index() was not found.
Error: Confirm you have created the file: T:\Project Folders\NetBeans\cakeBlog\app\View\Posts\index.ctp
我在stackoverflow,cakephp论坛甚至googlegroups中搜索过很多关于这个问题,但是没有一个解决方案似乎对我有用。发布的大部分解决方案如下:
检查mod_rewrite是否已启用 - 是的我启用了它。
检查您是否将index.ctp命名为index.ctp而不是index.cpt,Index.ctp或任何其他变体。 - 是的我已将索引放置如下app / views / Posts / index.ctp(使用netbeans向导)
使用标签代替php短标签 - 我使用传统的标签
开发环境
Web服务器 - WAMP
我创建了一个名为cakeblog
的别名,并将其指向cakephp_folder/app/webroot/
cakeblog.conf
Alias /cakeblog/ "T:\Project Folders\NetBeans\cakeBlog\app\webroot/"
<Directory "T:\Project Folders\NetBeans\cakeBlog\app\webroot/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
应用程序/根目录/ htaccess的
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /cakeblog
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
我还加载了本地化和debugkit插件。我只是将已安装的文件夹放入app / plugin并在bootstrap.php中添加以下内容
bootstrap.php中
CakePlugin::load('DebugKit'); //Loads a single plugin named DebugKit
CakePlugin::load('Localized');
core.php中
Configure::write('debug', 1);
我能够启动应用程序,我看到欢迎页面很好。我在startup.png中附上了它的快照
现在,让我粘贴代码,我只需从教程中复制粘贴:
应用/模型/ post.php中
<?php
class Post extends AppModel {
//put your code here
}
?>
应用/控制器/ PostsController.php
<?php
class PostsController extends AppController {
//put your code here
public $helpers = array('Html', 'Form');
public function index() {
$this->set('posts', $this->Post->find('all'));
}
public function view($id = null) {
if (!$id) {
throw new NotFoundException(__('Invalid post'));
}
$post = $this->Post->findById($id);
if (!$post) {
throw new NotFoundException(__('Invalid post'));
}
$this->set('post', $post);
}
}
?>
应用/视图/页/帖子/ index.ctp
<!-- File: /app/View/Posts/index.ctp -->
<h1>Blog posts</h1>
<table>
<tr>
<th>Id</th>
<th>Title</th>
<th>Created</th>
</tr>
<!-- Here is where we loop through our $posts array, printing out post info -->
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo $post['Post']['id']; ?></td>
<td>
<?php echo $this->Html->link($post['Post']['title'],
array('controller' => 'posts', 'action' => 'view', $post['Post']['id'])); ?>
</td>
<td><?php echo $post['Post']['created']; ?></td>
</tr>
<?php endforeach; ?>
<?php unset($post); ?>
</table>
请检查附件output.png,查看我收到的http://localhost/cakeblog/posts
输出的快照:
答案 0 :(得分:3)
更改目录app / View / Pages / Posts / to app / View / Posts /
每个控制器都有自己的dir和视图文件。
答案 1 :(得分:0)
视图文件存储在/ app / View /中,以使用这些文件的控制器命名的文件夹中存储,并以与其对应的操作命名。在您的示例中,Post控制器的“index()”操作的视图文件通常位于/app/View/Posts/index.ctp中。