Edson,
Faça um for() com a quantidade de campos de imagens que deseja usar, não importa se vai usar 1 ou 10, essa função que fiz irá funcionar.
Parametros que uso no Controller (Create/Update).
if($model->validate()) {
if($model->save()) {
////////////////////////////////////////////////////////////////////////////////////
//UPLOAD DAS IMAGENS
////////////////////////////////////////////////////////////////////////////////////
if (!empty($_FILES['img']['name'][0])) {
$options = array(
'resize-grande' => false, //redimensionar imagem grande
'resize-pequeno' => true, //redimensionar imagem pequena
'ratio-grande' => array('largura' => false, 'altura' => false), //ratio da imagem grande
'ratio-pequeno' => array('largura' => true, 'altura' => false), //ratio da imagem pequena
'medida-grande' => array('largura' => false, 'altura' => false), //medida da imagem grande
'medida-pequeno' => array('largura' => 243, 'altura' => false), //medida da imagem pequena
'extensao-grande' => 'jpg', //extensao da imagem grande
'extensao-pequeno' => 'gif', //extensao da imagem pequena
'cortar-grande' => false, //cortar imagem grande
'cortar-pequeno' => false, //cortar imagem pequena
'cortar-parametro' => 'LT', // T=top, R=right, B=bottom, L=left
'thumbnails' => true, //gerar miniatura
'watermark' => false, //adicionar marca dagua
'watermark-imagem' => 'watermark.png', //nome da imagem
'watermark-x' => '50%', //posicao horizontal
'watermark-y' => '50%', //posicao vertical
'watermark-thumbnails' => false, //adicionar marca daqua nas miniaturas
'pasta' => false, //usar pasta diferente
'pasta_image' => Yii::getPathOfAlias('webroot') . "/up/imgs/images/", //pasta da imagem grande
'pasta_thumb' => Yii::getPathOfAlias('webroot') . "/up/imgs/thumbs/", //pasta da imagem pequena
'save' => true, //salvar no banco de dados
'name' => '' //nome da imagem adicionado no campo de legenda
);
Helpers::UploadImage($_FILES['img'], $model, $options);
}
}
}
Agora a função que eu criei na class components/Helpers.php
public static function UploadImage($file, $model, $options = array()) {
Yii::import('application.extensions.upload.Upload');
if (!is_array($options)) {
throw new CHttpException(400, 'As opções de envio de arquivo precisa ser um array.');
}
$imgs = array();
foreach ($file as $k => $l) {
if (is_array($l)) {
foreach ($l as $i => $v) {
if (!array_key_exists($i, $imgs))
$imgs[$i] = array();
$imgs[$i][$k] = $v;
}
} else {
$imgs[0][$k] = $l;
}
}
foreach ($imgs as $img) {
set_time_limit(0);
$imagem = new Upload($img, Yii::app()->language);
if ($imagem->uploaded) {
///////////////////////////////////////////////////////////////
// Faz parte do meu Model onde eu só salvo as imagens/arquivos
///////////////////////////////////////////////////////////////
$file = new Arquivo();
$file->tipo = 'imagem';
$file->datacriacao = date('Y-m-d');
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
$imagem->allowed = array('image/*'); //Permitir somente imagem
if ($options['save']) {
$imagem->file_new_name_body = time(); //Nome do arquivo
$imagem->file_name_body_add = "_" . $file->primaryKey; // Préfixo adicional (opcional)
} else {
$imagem->file_new_name_body = $options['name']; //Definir o nome manual
}
$imagem->image_resize = $options['resize-grande']; //Alterar tamanho da imagem
if ($options['medida-grande']['largura']) {
$imagem->image_x = $options['medida-grande']['largura']; //Medida da largura da imagem
}
if ($options['medida-grande']['altura']) {
$imagem->image_y = $options['medida-grande']['altura']; //Medida da altura da imagem
}
if ($options['cortar-grande']) {
$imagem->image_ratio_crop = $options['cortar-parametro']; //Medida do recorte da imagem
} else {
$imagem->image_ratio_x = $options['ratio-grande']['altura']; //Setar a relação da imagem na altura
$imagem->image_ratio_y = $options['ratio-grande']['largura']; //Setar a relação da iamgem na largura
}
if ($options['extensao-grande']) {
$imagem->image_convert = $options['extensao-grande']; //Nova extensão da imagem grande
}
if ($options['watermark']) {
$imagem->image_watermark = Yii::getPathOfAlias('webroot') . '/images/' . $options['watermark-imagem']; //Caminho da imagem da marca d'água
$imagem->image_watermark_x = $options['watermark-x']; //Setar a posição da marca d'água
$imagem->image_watermark_y = $options['watermark-y']; //Setar a posição da marca d'água
}
if (!$options['pasta'])
$pasta = Yii::getPathOfAlias('webroot') . "/up/{$file->datacriacao}/"; //Pasta padrão que irá ser salvo a imagem
else
$pasta = $options['pasta_image']; //Pasta que deseja que a imagem seja salvo (ver na variável $options no Controller)
$imagem->process($pasta);
if ($imagem->processed) {
$file->arquivo = $imagem->file_dst_name; //Setando na variavel o nome completo do arquivo com o previso, para ser salvo no banco de dados.
if ($options['save']) //Se deseja salvar no banco de dado
$file->save();
} else {
Yii::app()->user->setFlash('error', $imagem->error);
Arquivo::model()->deleteByPk($file->id);
unset($file->id);
}
///////////////////////////////////////////////////////////////
///// MINIATURA
///////////////////////////////////////////////////////////////
if ($options['thumbnails']) {
$file->datacriacao = $model->datacriacao;
$imagem->allowed = array('image/*');
if ($options['save']) {
$imagem->file_new_name_body = strtotime($file->datacriacao);
$imagem->file_name_body_add = "_" . $file->primaryKey;
} else {
$imagem->file_new_name_body = $options['name'];
}
$imagem->image_resize = $options['resize-pequeno'];
if (is_numeric($options['medida-pequeno']['largura'])) {
$imagem->image_x = $options['medida-pequeno']['largura'];
}
if (is_numeric($options['medida-pequeno']['altura'])) {
$imagem->image_y = $options['medida-pequeno']['altura'];
}
if ($options['cortar-pequeno']) {
$imagem->image_ratio_crop = $options['cortar-parametro'];
} else {
$imagem->image_ratio_x = $options['ratio-pequeno']['altura'];
$imagem->image_ratio_y = $options['ratio-pequeno']['largura'];
}
if ($options['extensao-pequeno']) {
$imagem->image_convert = $options['extensao-pequeno'];
}
if ($options['watermark-thumbnails']) {
if ($options['watermark']) {
$imagem->image_watermark = Yii::getPathOfAlias('webroot') . '/images/site/' . $options['watermark-imagem'];
$imagem->image_watermark_x = $options['watermark-x'];
$imagem->image_watermark_y = $options['watermark-y'];
}
}
if (!$options['pasta'])
$pasta = Yii::getPathOfAlias('webroot') . "/up/" . get_class($model) . "/{$datacriacao}/";
else
$pasta = $options['pasta_thumb'];
$imagem->process($pasta);
if ($imagem->processed) {
$file->mini = $imagem->file_dst_name;
if ($options['save'])
$file->save();
} else {
Yii::app()->user->setFlash('error', $imagem->error);
}
}
$imagem->clean();
}
}
}
Detalhei alguns itens, se observar a função, todas as variáveis nas condicional, vem da variável $options que está no Controller.