Subir Imágenes Con Yiibooster Y Redactor

Hola a todos.

Estoy intentando incluír una subida de imágenes desde el widget de Yiibooster/Redactor.

Me he encontrado unos problemas que no me permiten avanzar.

Tengo un modelo Producto ($model) con un campo ‘imagen’ que tiene el nombre que le he dado en el directorio de la imagen, que completo luego con el path ‘images/producto’.

Las acciones GetImageData y UploadImage están en el siteController.

En mi _form tengo el widget creado, que ‘parece’ funcionar bien:





$this->widget('bootstrap.widgets.TbRedactorJs',

    array(

      'model'=>$model,

      'attribute'=>'imagen',

      'editorOptions'=>array(

          'imageUpload' => $this->createUrl('site/uploadpicture'),

          'imageGetJson'=> $this->createUrl('site/getimagedata', 

                array(

                    'folder'=>'producto',

                    'path'=>'images',

                    'title'=>$model->titulo,

                    'filelink'=>'/images/producto/'.$model->imagen, // no estoy muy seguro de esto

                    'thumb'=>'/images/producto/m_'.$model->imagen,// no estoy muy seguro de esto[/size]

                    'imagen'=>$model->imagen,

                )),

          'width'=>'100%',

          'height'=>'400px',

          'buttons'=>array('image'),

   	)

    ));



Cuando veo el ‘camino’ que siguen los datos en firebug, llama primero a site/GetImageData, y devuelve los datos que estan allá por Json, si hay alguno.

Entonces selecciono la imagen, y al hacer OK llama a site/UploadPicture, en la que muevo ‘manualmente’ la imagen del TMP al directorio images/producto, con un time() (temporalmente, hasta que encuentre algo más satisfactorio), y de ahí vuelve al _form.





		public function actionUploadPicture()

		{

		//	$picture = new Picture;

			// hacer aqui la copia del tmp al Images/producto

			// con el saveAs y esas cosas

			// y pasar los datos por Json, para en el update actualizar la base de datos


			if (move_uploaded_file ($_FILES['file']['tmp_name'], 'images/producto/'.time().$_FILES['file']['name'])) {


	    	echo json_encode(array(

	        	array(

	        		'error'=>$_FILES['file']['error'],

	        		'name'=>$_FILES['file']['name'],

	        		'tmp_name'=>$_FILES['file']['tmp_name'],

	        		'filetype'=>$_FILES['file']['type'],

	        		'size'=>$_FILES['file']['size'],

	        		'filelink' => 'images/producto/'.time().$_FILES['file']['name'],


	        	),	

	    	));

		}

		}

/**

 * Handle file/image data via redactor widget from Yiibooster

 * 

 */

		public function actionGetImageData()

		{


			//$picture = new Picture;

			echo json_encode(array(

		    	array(

					'folder' => $_GET['folder'], // optional

					'imagen' => $_GET['imagen'], // menos importante, el nombre de la imagen

					'filelink' => '/images/producto/'.$_GET['imagen'], // importante, el link a la imagen

					//'fileName' => '/images/producto/'.$_GET['imagen'],

					'path'=> $_GET['path'],

					'thumb' => '/images/producto/m_'.$_GET['imagen'],

					'title' => $_GET['title'], // optional

					/**/

                  ),

			));

		

		}



Hasta ahora he conseguido subir la imagen del tmp al directorio que deseo, images/producto, pero sé que no es la manera adecuada ($_GET y $_FILES).

También cree un modelo Picture, pero no lo estoy usando.

En _form no se me actualiza la imagen subida, pero sí lo hace cuando creo a mano la variable ‘filelink’ en GetImageData.

Mi intención es pasar los datos desde el _form (si es un update, no si es un newRecord) hasta el GetImageData (si ésto es así, que no lo entiendo en realidad), y de ahí los datos de la imagen subida al UploadImage para que los devuelva al _form, y actualizar el model Producto en un segundo paso, pero no con $_GET y con $_POST, sino con los métodos de Yii, $model->imagen=CUploadedFile::getInstance($model,‘imagen’) y $model->imagen->saveAs(‘path/to/localFile’).

No sé si ha quedado claro, no obstante.

Si alguien me pudiera indicar una dirección adecuada para realizarlo correctamente…

Gracias anticipadas.