【问题标题】:HtmlHelper not loaded in tutorial example教程示例中未加载 HtmlHelper
【发布时间】:2011-02-02 11:17:18
【问题描述】:

我按照教程为 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 稳定版。

有人知道吗?

【问题讨论】:

  • FormHelper 是否已加载到您的视图中?如果您在视图中执行 pr($this->Html) 会得到什么? pr($html) 怎么样?在 CakePHP 1.3 之前,助手是直接访问的,而不是通过 View 对象。在 CakePHP 1.3 中,这两种方法都可以工作。普通的 $html->link() 或 $form->input() 方法对你有用吗?
  • @mtnorthrop 谢谢。它工作得很好!我会通知 CakePHP 团队这件事
  • 嘿,我很高兴这有帮助。是否有可能您实际上没有安装 CakePHP 1.3 并下载了 1.2?如果你检查 cake/VERSION.txt,你应该可以知道。
  • 嘿。我确实使用了1.3。我在 CakePHP 邮件列表上发帖,有人指出下载 1.2 并替换 cake 文件夹可以解决问题。猜猜这是 1.3 的错误?

标签: cakephp


【解决方案1】:

喜欢上面 mtnorthrop 的评论:

FormHelper 是否正在加载到您的 意见?如果你这样做,你会得到什么 pr($this->Html) 在你看来?如何 关于 pr($html)?在 CakePHP 1.3 之前, 而是直接访问了助手 通过 View 对象。在 CakePHP 中 1.3 两种方法都应该有效。普通的 $html->link() 还是 $form->input() 方法对你有用吗? – 诺斯罗普 51 分钟前

【讨论】:

    【解决方案2】:

    从书中:

    "HtmlHelper 可用于所有 默认视图。如果你得到一个 错误通知您它不是 在那里,通常是由于它的名字 手动丢失 配置的 $helpers 控制器 变量。”

    您不需要在控制器中指定它。也许这样做会干扰核心?顺便说一句,您也不需要指定 Form。

    【讨论】:

    • 感谢您的帮助。我尝试删除 var $helpers=... 行,但它仍然给出相同的错误
    猜你喜欢
    • 1970-01-01
    • 2012-02-01
    • 2017-01-07
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    相关资源
    最近更新 更多