CakePHP1.2.3 MediaPluginをつかってみた
2009-07-31 追記
CakePHP1.2.3 MediaPluginをつかってみた その2
最小導入方法
davidpersson's media at master - GitHub
GitHubからソースコードを持ってきて、app/pluginsフォルダ内に配置。
$ cd app $ cake schema run create media -path plugins/media/config/sql
もしくは
plugins/media/config/sql/media.sql
を元にTableを作成。
app/webroot/media フォルダ作成してパーミッションを設定
app/config/bootstrap.phpに次を追加
<?php require_once(APP.'plugins'.DS.'media'.DS.'config'.DS.'core.php'); ?>
ModelにAssociationを追加
<?php class Post extends AppModel { var $name = 'Post'; var $hasMany = array( 'Attachment' => array( 'className' => 'Media.Attachment', 'foreignKey' => 'foreign_key', 'conditions' => array('model' => 'Post'), 'dependent' => true, ), ); } ?>
ControllerのModel::save()をModel::saveAll()に変更
- if ($this->Post->save($this->data)) { + if ($this->Post->saveAll($this->data, array('validate' => 'first'))) {
ViewtにMediaPluginのelementを追加
FromHelper::create() の option に array('type' => 'file') を忘れずに
add.ctp, edit.ctp
<?php echo $form->create('Post', array('type' => 'file')); echo $form->input('id'); echo $form->input('subject'); echo $form->input('body'); echo $this->element('attachments', array('plugin' => 'media')); echo $form->end('submit'); ?>
view.ctp
hasManyでやってるので複数でてくる
<?php echo $medium->embed($medium->file('filter/s', $post['Attachment'][0])); ?>
設定
media/config/core.php の中身をみるとだいたい分かる。
画像加工の種類
- fit
- 設定サイズに収まるように縮小
- fitCrop
- 画像を最大限使用できるように、縮小した上で設定サイズでトリミング
- zoomCrop
- 画像の中心部分を設定サイズでトリミング (たぶんあってる)
保存ファイル名の変更
media/models/behaviors/transfer.php のコメントをみるとだいたい分かる。
2009-07-31 追記
CakePHP1.2.3 MediaPluginをつかってみた その2