忍び歩く男 - SLYWALKER

大阪のこっそりPHPer

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