我正在将Vimeo Player与我的cakephp应用程序集成,它给我上面的错误
Error: Call to a member function getEmbedHtml() on a non-object
File: C:\wamp\www\ann\app\View\Videos\index.ctp
Line: 1
这是我的第1行
<?php echo $vimeo->getEmbedHtml('https://www.vimeo.com/44633289', array()); ?>
此链接正常https://www.vimeo.com/44633289
以下是Vimeohelper.php
文件
<?php
class VimeoHelper extends AppHelper
{
/**
* Creates Vimeo Embed Code from a given Vimeo Video.
*
* @param String $vimeo_id URL or ID of Video on Vimeo.com
* @param Array $usr_options VimeoHelper Options Array (see below)
* @return String HTML output.
*/
function getEmbedCode($vimeo_id, $usr_options = array())
{
// Default options.
$options = array
(
'width' => 400,
'height' => 225,
'show_title' => 1,
'show_byline' => 1,
'show_portrait' => 0,
'color' => '00adef',
);
$options = array_merge($options, $usr_options);
// Extract Vimeo.id from URL.
if (substr($vimeo_id, 0, 21) == 'http://www.vimeo.com/') {
$vimeo_id = substr($vimeo_id, 21);
}
$output = array();
$output[] = sprintf('<object width="%s" height="%s">', $options['width'], $options['height']);
$output[] = ' <param name="allowfullscreen" value="true" />';
$output[] = ' <param name="allowscriptaccess" value="always" />';
$output[] = sprintf(' <param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=%s&server=www.vimeo.com&show_title=%s&show_byline=%s&show_portrait=%s&color=%s&fullscreen=1" />', $vimeo_id, $options['show_title'], $options['show_byline'], $options['show_portrait'], $options['color']);
$output[] = sprintf(' <embed src="http://www.vimeo.com/moogaloop.swf?clip_id=%s&server=www.vimeo.com&show_title=%s&show_byline=%s&show_portrait=%s&color=%s&fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="%s" height="%s"></embed>', $vimeo_id, $options['show_title'], $options['show_byline'], $options['show_portrait'], $options['color'], $options['width'], $options['height']);
$output[] = '</object>';
return $this->output(implode($output, "\n"));
}
}
?>
答案 0 :(得分:1)
错误告诉您需要知道的一切。 您没有正确访问帮助程序。
a)您需要将其包含在控制器public $helpers
b)您需要使用$this-Vimeo
和正确的方法名称正确调用它(您不能只创建自己的名称,因为该方法需要存在!):
<?php echo $this-Vimeo->getEmbedCode(...); ?>
$vimeo->
的代码段对于完全过时的cake1.2(不适用于cake1.3或cake2.x)是正确的。
答案 1 :(得分:0)
您能否提供有关如何初始化$ vimeo的更多信息?
很可能$ vimeo初始化不正确,并且在此处访问时设置为null。 希望这有助于您的调试。
看起来VimeoHelper中的getEmbedCode函数就是你想要使用的而不是getEmbedHtml。
考虑将功能定义更改为
static function getEmbedCode($vimeo_id, $usr_options = array())
然后您可以通过调用以下方式获取嵌入式URL:
VimeoHelper::getEmbedCode('https://www.vimeo.com/44633289', array())