[CakePHP] 画像のアップロード&リサイズを簡単にできる ImageBehavior | Sun Limited Mt.
使い方は参照元にあるので省略するが、簡単に使えて良い感じ。
ただ、findしたときに関連テーブルのimageまでは処理してくれない。
で、また調べてたら、下記記事でbelongsToに対して処理を足してたので参考にみる。
ちなみに、今回処理させたい関連はhasMany。
cakePHPのimageBehaviorについて – CEED
afterFindに処理を加えてるよう。
今回はhasManyを処理したいので、relatedModelsにhasManyもマージする。
$relatedModels = array_merge($model->belongsTo, $model->hasMany);
これだけだと動かなかった。。。
hasManyなわけで複数のときもあるので、127-130行までの処理を複数の場合を考慮する。
if (isset($results[$i][$relatedModelName][0])) {
$j=0;
while ( isset( $results[$i][$relatedModelName][$j] ) && is_array( $results[$i][$relatedModelName][$j] ) ) {
if (isset($results[$i][$relatedModelName][$j][$field]) && ($results[$i][$relatedModelName][$j][$field]!='')) {
$value=$results[$i][$relatedModelName][$j][$field];
$results[$i][$relatedModelName][$j][$field]=$this->__getParams($relatedModel, $field, $value,$fieldParams, $results[$i][$relatedModelName][$j]);
}
$j++;
}
} else {
if (isset($results[$i][$relatedModelName][$field]) && ($results[$i][$relatedModelName][$field]!='')) {
$value=$results[$i][$relatedModelName][$field];
$results[$i][$relatedModelName][$field]=$this->__getParams($relatedModel, $field, $value,$fieldParams, $results[$i][$relatedModelName]);
}
}
145-148行のところも同様に。 if (isset($results[$relatedModelName][0])) {
$j=0;
while ( isset( $results[$relatedModelName][$j] ) && is_array( $results[$relatedModelName][$j] ) ) {
if (isset($results[$relatedModelName][$j][$field]) && ($results[$relatedModelName][$j][$field]!='')) {
$value=$results[$relatedModelName][$j][$field];
$results[$relatedModelName][$j][$field]=$this->__getParams($relatedModel, $field, $value,$fieldParams, $results[$relatedModelName][$j]);
}
$j++;
}
} else {
if (isset($results[$relatedModelName][$field]) && ($results[$relatedModelName][$field]!='')) {
$value=$results[$relatedModelName][$field];
$results[$relatedModelName][$field]=$this->__getParams($relatedModel, $field, $value,$fieldParams, $results[$relatedModelName]);
}
}
これでhasManyの関連のテーブルのimageが処理されるようになりましたっと。