CakePHP Помощь с учебником блога - PullRequest
0 голосов
/ 28 декабря 2010

Я только что следовал руководству на веб-сайте CakePHP, чтобы создать простой блог, чтобы немного узнать о Cake.Однако я столкнулся с ошибкой и не уверен, почему, поскольку я точно следовал тому, что говорится в руководстве.Ошибки:

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

Вот мой 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());
    }
}
?>

, а вот моя модель

<?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>

Обновление

Оказывается, я использовал более старую версию CakePHP.

Ответы [ 2 ]

2 голосов
/ 28 декабря 2010

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

Теперь к помощникам можно обращаться по адресу $ this-> Helper-> func () в дополнение к $ helper-> func ().Это позволяет просматривать переменные и помощники для совместного использования имен, а не создавать коллизии.

Вы используете версию CakePHP ниже 1.3.

0 голосов
/ 28 декабря 2010

Вместо этой строки, по вашему мнению,

<?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'])); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...