【问题标题】:Helper not available in the view助手在视图中不可用
【发布时间】:2015-10-05 15:16:12
【问题描述】:

我正在从 1.3 迁移到 2.0.6 并且遇到以下问题:

注意(8):未定义变量:session [APP/View/Users/login.ctp, line 2]

致命错误:在第 2 行的 login.ctp 中对非对象调用成员函数 flash()

为什么访问会话助手时出现问题?

【问题讨论】:

  • 您是否可能正在测试以前未定义的变量。像if($session)... 没有先设置$session = false 之类的?

标签: php cakephp cakephp-2.0


【解决方案1】:

这不是使用助手的方法

注意(8):未定义变量:session [APP/View/Users/login.ctp, line 2]

致命错误:在 login.ctp 中对非对象调用成员函数 flash()

虽然不是问题,但您的login.ctp 模板看起来像这样:

<?php
echo $session>flash(); # line 2

不是 how helpers are expected to be used in CakePHP 2.x:

您可以通过访问以 帮手:

<!-- make a link using the new helper -->
<?php echo $this->Link->makeEdit('Change this Recipe', '/recipes/edit/5'); ?>

您要查找的代码是:

# echo $session->flash(); # wrong
echo $this->Session->flash(); # right

还要注意Session 需要在controller $helpers array 中。

在 1.2 和更早的版本中,CakePHP 助手应该是变量,this changed but was still supported in 1.3。如果您的 1.3 CakePHP 应用程序一直以这种方式使用帮助程序,那么它一直依赖于与早期版本的向后兼容性。在 2.0 中,助手不是变量,只能作为视图类属性访问。请务必阅读the migration guides - 了解有关更改内容的更多信息。

【讨论】:

  • 谢谢!这解决了我的问题。我正在从 1.3 升级到 2.0.6,所以我只是想解决所有的错误
  • 这是一个奇怪的升级版本 - 我建议您升级到最新的 2.x 版本。
  • 是的,我到了那里,但尝试从 1.3 直接升级到最新版本真的很难,所以我分两步完成。
  • 请重新阅读我上面的评论。您会发现从 1.3 升级到 2.0、2.7 或(如果您将来阅读本文,无论当前的 2.x 版本是什么)几乎没有区别。
猜你喜欢
  • 2013-11-24
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 2012-09-04
  • 2014-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多