CakePHPのHTMLヘルパーのmediaメソッドではまる

どうも、凡人です。
正月早々、CakePHP2.xでつまりました。

とある理由で、HTML5のvideoタグCakePHPで出力したい。
CakePHP2.xでは、HTMLヘルパーのmediaメソッドを利用します。

mediaメソッドは、audioタグとvideoタグを出力します。
どちらのタグを出力するかは、mediaメソッドで指定したファイルの拡張子で判断されます。

今回、私はMOVファイルを指定しました。
iPhoneで撮影した動画ファイルです。

MOVファイルをmediaメソッドで指定した場合、audioタグで出力されてしまいます。
これを、videoタグで出力するように指定したいです。

CakePHP日本語マニュアルより

type メディアタグを作成する際の種類を指定します。有効な値は “audio” か “video” です。指定しなかった場合はファイルの MIME タイプから判別します。

なるほど、とtypeを指定したところ、反映されませんでした。
あれ?
これで嵌りました。
小一時間、グーグル先生に聞いてみたが、そもそもmediaメソッドの情報が少ない。
何かおかしいと思い、原文を確認。

CakePHP英語マニュアルより

tag Type of media element to generate, either “audio” or “video”. If tag is not provided it’s guessed based on file’s mime type.

指定しなきゃいけないのはtagなんですね・・・

ということで、コードは以下のようになりました。


html->media( File.MOV,
array(
'tag' => "video",
'width'=>'480',
'height'=>'270',
'pathPrefix' => 'files' . DS. 'videos' . DS,
'autoplay',
'controls',
)
);
?>

おかしいな、と思ったら、原文をまずは確認すべし!というよい教訓をえることができました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax