在教程示例中未加载HtmlHelper

时间:2011-02-02 11:17:19

标签: cakephp

我按照教程为CakePHP 1.3创建了一个博客,直到this step,但在运行应用程序时一直出错:

Notice (8): Undefined property: View::$Html [APP\views\posts\index.ctp, line 27]

第27行:

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

显然CakePHP没有加载HtmlHelper类,我在我的控制器中反复检查,Html应该正确加载。

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

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

当我将这一行添加到视图(index.ctp)时,它可以正常工作

$this->Html = &$this->loaded['html'];

但显然我不能为每个ctp文件做到这一点。我正在运行Windows 7,WAMP 2,PHP 5.3.5,CakePHP 1.3.7稳定。

任何人都有线索?

2 个答案:

答案 0 :(得分:1)

就像上面mtnorthrop的评论一样:

  

FormHelper是否已加载到您的   看法?如果你这样做,你会得到什么?   pr($ this-> Html)在你的视图中?怎么样   关于pr($ html)?直到CakePHP 1.3,   直接访问助手   通过View对象。在CakePHP中   1.3两种方法都应该有效。是普通的$ html-> link()还是$ form->输入()   方法适合你吗? - mtnorthrop 51   分钟前

答案 1 :(得分:0)

从书中可以看出:

  

“HtmlHelper全部可用   默认情况下的视图如果你得到了   错误通知你它不是   在那里,通常是由于它的名字   手动丢失   配置$ helpers控制器   变量“。

您不需要在控制器中指定它。也许某种程度上干扰核心?顺便说一句,您不需要指定Form。