2010-12-28 15 views
0

私はCakePHPのウェブサイトでチュートリアルに従って、簡単なブログを作成してCakeについて少し学びました。しかし、私はエラーに遭遇し、なぜ私はチュートリアルが言う通りに正確に従っているように確信していません。エラー:ここCakePHPヘルプとブログチュートリアル

Notice (8): Undefined property: View::$Html [APP/views/posts/index.ctp, line 17] 
Fatal error: Call to a member function link() on a non-object in /Users/cameron/Sites/dentist/app/views/posts/index.ctp on line 17 

<?php 

class Post extends AppModel { 
    var $name = 'Post'; 
} 

?> 

、ここでは私の意見

<!-- File: /app/views/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; ?> 

</table> 

を更新している私のモデルの私posts_controller

<?php 
class PostsController extends AppController { 
    var $helpers = array('Html', 'Form'); 
    var $name = 'Posts'; 

    function index() { 
     $this->set('posts', $this->Post->find('all')); 
    } 

    function view($id = null) { 
     $this->Post->id = $id; 
     $this->set('post', $this->Post->read()); 
    } 
} 
?> 

であり、ここである

私は古いバージョンのCakePHPを使っていました。あなたのビューの代わりにこのラインの

答えて

2

http://book.cakephp.org/view/1572/New-features-in-CakePHP-1-3から:

ヘルパーは今 $で対処することができます $ helper-> func()のほかに、this-> Helper-> func()があります。これにより、ビュー の変数とヘルパーは、 という名前を共有でき、衝突を作成することはできません。

あなたはバージョン1.3より下のCakePHPを使用しています。

0

<?php echo $this->Html->link($post['Post']['title'], array('controller' => 'posts', 'action' => 'view', $post['Post']['id'])); ?> 

使用このヘルパーを呼び出すために:

<?php echo $html->link($post['Post']['title'], array('controller' => 'posts', 'action' => 'view', $post['Post']['id'])); ?> 
+0

元のコードで何が問題になっていますか?それはチュートリアルから直接コピーされています... – Cameron

+1

私はあなたが古いcakephpバージョンを使用していると思います。 – dhofstet

+0

私はCake 1.3.0.0を使うのと同じ問題を抱え、* am *です。しかし、yvoyerの提案はうまくいった。 –