CakePHP媒体插件助手问题

CakePHP媒体插件助手问题,cakephp,plugins,helper,Cakephp,Plugins,Helper,我试图用CakePHP的媒体插件显示上传的图像 我将助手添加到控制器助手数组:var$helpers=array('Media.Media')。然后,在我看来,我有以下代码:echo$media−>文件($news['Attachment'][0]['dirname'].DS.$news['Attachment'][0]['basename'])。但问题是,它会输出以下错误: Undefined variable: media− [APP/views/news/view.ctp, line 3]

我试图用CakePHP的媒体插件显示上传的图像

我将助手添加到控制器助手数组:
var$helpers=array('Media.Media')。然后,在我看来,我有以下代码:
echo$media−>文件($news['Attachment'][0]['dirname'].DS.$news['Attachment'][0]['basename'])。但问题是,它会输出以下错误:

Undefined variable: media− [APP/views/news/view.ctp, line 3]
有什么问题吗

顺便说一下,如果插件在app/plugin/users/models/User.php中有一个模型用户,我在app/models文件夹中创建了一个名为User的新模型,那么将加载哪个模型


提前感谢您的帮助

首先,如果您使用的是1.3.x,请通过$this->HelperName->method()引用helpers,在某些方法中可能会设置一个名为$media的变量。您可以通过执行var_dump($media)来检查这一点

另一个选择是,有些事情可能会使它不稳定。很奇怪,您设置了helper,但没有设置变量。这也可能是由于将$helpers数组添加到了错误的控制器,您可以尝试将其添加到app_控制器,看看是否有效。如果有,你放错地方了

如果我答对了你的第二个问题,我们讨论的是自动加载,插件控制器将首先在它自己的插件目录中查找模型,如果在那里找不到它,它将返回到app/models目录

如果您是通过$uses数组手动加载它,则这取决于cake的版本以及如何执行。在以前的版本中,1.x偶数$uses=array('User');将加载插件模型,因为cake将自动添加插件前缀。这在2.0 afaik中有所改变

对于加载模型的其他方法,例如$this->loadModel('User');将从app/models加载,$this->loadModel('PluginName.User')将从app/plugins/plugin\u name/models目录加载

编辑:
你是对的,错误显示$media很有趣,这就是问题所在。你是从某个网站复制的代码吗?− 不是-代码中有一个utf8字符,这正是它所抱怨的。

谢谢您的回答!不幸的是,您的解决方案都不起作用。如果使用
$this->Media->file()
会出现以下错误:
未定义属性:视图::$Media− [APP/views/news/view.ctp,第3行]
。将助手添加到AppController会产生相同的结果。如果我
debug($media)
,它会向我显示一个完整的数组,所以它被设置了。还有其他建议吗?关于我的第二个问题,你答对了,我感谢你澄清了这个问题。插件助手和普通助手一样使用吗?我的意思是,它不应该用作
$this->MediaMedia
$this->Media\u Media
?不,它们的加载方式不同,因此var$helpers=array('Media.Media');对于插件和var$helpers=array('Media');对于非插件。关于第一个问题,$this->Media应该是一个对象(或$Media),而不是一个数组。对变量错误的内容进行回顾,这是一个对象。它包含(仅部分,因为太长):
mediaheloper对象([helpers]=>Array([0]=>Html)[tags]=>Array([audio]=>%s%s[video]=>%s%s[source]=>[Object]=>%s[param]=>)