mediaプラグイン応用(6) Viewパーツの設定
mediaプラグインのヘルパーMediumと、編集フォーム出力用エレメントAttachmentの設定を変更する、主な変数/引数をまとめました。
Mediumヘルパー
embed($path, $options)
- $path
表示ファイルのパス。
- $options
- $options['alt']
タグのalt要素を指定。
-
- $options['url']
指定のURLにリンクする。
Htmlヘルパーのlink()メソッドを使用しているので、URLの指定方法はそちらを参照。
ただし、$htmlAttributes, $confirmMessage, $escapeTitleの属性が固定になるので自由度が下がる。
-
- $options['restrict']
指定と異なる種類のファイルの場合、何も出力しない。
指定書式は、プラグインのvendor/medium/medium.phpに記載の$_mimeTypesToNamesから (Imageとか)選べばOK
static $_mimeTypesToNames = array( 'application/ogg' => 'Audio', 'application/pdf' => 'Document', 'application/msword' => 'Document', 'image/icon' => 'Icon', 'text/css' => 'Css', 'text/javascript' => 'Js', 'text/code' => 'Generic', 'text/rtf' => 'Document', 'text/plain' => 'Text', 'image/' => 'Image', 'audio/' => 'Audio', 'video/' => 'Video', 'text/' => 'Generic', '/' => 'Generic', );
-
- $options['id'],$options['class']
出力タグのIDとclassを指定。
-
- $options['width'],$options['height']
出力タグのwidhtとheight要素を指定。
画像や動画の場合、取得できれば自動指定される。
-
- $options['autoplay'],$options['controls'],$options['background']
動画の場合、自動再生するか・動画再生のコントロールパネル出力・背景色などを指定するオプション。動画の種類によっては無効な場合もある
file($path, $Attachment)
指定ファイルのパスを返すメソッド。
fileメソッドの引数は本来$path1つだけですが、func_get_args()を使って第二引数の処理を行なっています。attachmentsから取得したデータをここに指定します。
- $path
filter/s のように、Versionファイルのディレクトリ/設定を指定。
Viewの記載例(アップロード済み画像の表示)
$path = $upfile->file( 'filter/m', $user['Attachment'][0] ); $url = null; if ($user['User']['id'] == $target_user['User']['id']) { $url = array( 'controller' => 'users', 'action' => 'edit_image', ); } echo $medium->embed( $path, $options = array( 'url' => $url, 'alt' => $target_user['User']['name'], 'id' => 'HomeUserImage', 'restrict' => array('image') ) );
Attachment
エレメント。他のモデルの編集フォームに組み込んで、添付ファイルのアップロード・削除フォームを表示する。
変数
- $previewVersion
アップロード済み画像の表示サイズ。指定ない場合xxs
- $assocAlias
アップロードファイルのモデル名を指定。指定がない場合Attachment。
これを変更して、Image, Video, Document・・・のようにすると、画像・動画・文章を別々に保管できる。但しそれぞれにモデルの設定とコントローラ処理が必要。
- $model
アップロードファイルの親モデル。指定がない場合、現在のモデル。
Viewの記載例(編集画面にフォーム追加)
<?php echo $form->create('User', array( 'url' => array( 'controller' => 'users', 'action' => 'edit', $user['id'] ), 'type' => 'file', ));?> (中略) echo $this->element( 'attachments', $options => array( 'plugin' => 'media', 'previewVersion' => 'm', ) );