-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 

ここに私の行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

$this-Vimeob)正しいメソッド名を使用して適切に呼び出す必要があります(メソッドが存在する必要があるため、独自の名前を発明することはできません!):

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

あなたのコードスニペット$vimeo->は、完全に時代遅れの Cake1.2 (cake1.3 や cake2.x ではありません) に対して正しいでしょう。

于 2013-04-06T10:54:43.067 に答える
0

$vimeo の初期化方法について詳しく教えていただけますか?

ほとんどの場合、$vimeo は不適切に初期化されており、ここでアクセスすると null に設定されます。これがデバッグに役立つことを願っています。

また、getEmbedHtml の代わりに VimeoHelper の getEmbedCode 関数を使用するようです。

関数定義を次のように変更することを検討してください

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

次に、次のように呼び出して、後で埋め込まれた URL を取得できます。

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