-1

我正在将 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 

这是我的第一行

  <?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")); 
    } 
} 
?>
4

2 回答 2

1

该错误会告诉您您需要知道的一切。您没有正确访问帮助程序。

a)您需要将其包含在您的控制器中public $helpers

b)您需要使用$this-Vimeo正确的方法名称正确调用它(您不能只是发明自己的名称,因为该方法需要存在!):

<?php echo $this-Vimeo->getEmbedCode(...); ?>

您的代码片段$vimeo->适用于完全过时的 cake1.2(不适用于 cake1.3 或 cake2.x)。

于 2013-04-06T10:54:43.067 回答
0

您能否提供有关如何初始化 $vimeo 的更多信息?

很可能 $vimeo 初始化不正确,当您在此处访问它时设置为 null。希望这对您的调试有所帮助。

而且看起来 VimeoHelper 中的 getEmbedCode 函数是您想要使用的,而不是 getEmbedHtml。

考虑将函数定义更改为

static function getEmbedCode($vimeo_id, $usr_options = array())

然后您可以稍后通过调用获取嵌入的 url:

VimeoHelper::getEmbedCode('https://www.vimeo.com/44633289', array())
于 2013-04-06T10:30:42.563 回答