Вопрос По Загрузке Изображений На Сервер

Всем добрый день. Захотел я прикрутить такую вот вещь http://www.yiiframework.com/wiki/430/how-to-use-yiibooster-tbfileupload-widget/

Файла сохраняется, в БД не пишется. Решил начать с малого, нашел рецепт http://yiiframework.ru/doc/cookbook/ru/form.file.upload

В контроллере пишу




public function actionCreate()

	{

		$model=new Slider;


		// Uncomment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);


		if(isset($_POST['Slider']))

		{

			$model->attributes=$_POST['Slider'];

			$model->img_url=CUploadedFile::getInstance($model,'img_url');

			if($model->save())

				$model->img_url->saveAs(Yii::setPathOfAlias('webroot', '/var/www/uploads'));

				$this->redirect(array('view','id'=>$model->id));

		}


		$this->render('create',array(

			'model'=>$model,

		));

	}



Имя изображения в БД пишется, а вот загрузку не осилю, пишет “move_uploaded_file(): Filename cannot be empty” :blink:

С рецептом проблему решил, правда сейчас путь выглядит так


$model->img_url->saveAs(Yii::app()->getBasePath()."../../../uploads/slider/".$model->img_url);

Кто нить подскажет более красивый вариант ? ::)

Столкнулся с другой проблемой, валидация не работает, т.е. пишу в модели




public function rules()

	{

		// NOTE: you should only define rules for those attributes that

		// will receive user inputs.

		return array(

			array('img_url', 'file', 'allowEmpty'=>true, 'types'=>'jpg'),

			array('img_url', 'required'),

			array('img_url', 'safe'),

			// The following rule is used by search().

			// @todo Please remove those attributes that should not be searched.

			array('id, img_url', 'safe', 'on'=>'search'),

		);

	}



А загружать могу что угодно :(

>array(‘img_url’, ‘safe’),

:)

Спасибо, но не особо помогло, чего я заметил - при сохранении модели валидация работает теперь, но дело в том что файл все равно загружается :unsure:

enctype= multipart/form-data method= post

?

Ну это само собой :)

Почти допилил, подскажите пожалуйста следующий момент, есть 2 таблицы - Product и ProductImg, все отлично работает, но названия пишутся в обе таблицы, а должны писаться только в таблицу ProductImg, собственно сам код:




$model->img_url = CUploadedFile::getInstance($model, 'img_url');

	}

    if ($model->img_url !== null  && $model->validate(array('img_url')))

    {

        $model->img_url->saveAs(Yii::app()->getBasePath()."../../../uploads/product/".$model->img_url);

        //$model->file_name = $model->img_url;

        // save picture name

        if( $model->save())

        {



:(

Всем доброе утро,допилил уже совсем почти, но остался один момент, подскажите пожалуйста как присвоить id записи изображениям, т.е. есть таблица

productimg

–id

–product_id

–img_url

Дык вот как передать в product_id, id сохраняемой модели не въеду

Код контроллера Product, actionCreate




	public function actionCreate()

	{

		$data = array();

		$model = new Products('upload');	

	if(isset($_POST['Products']))

	{

		$model = new Products;

		$model->attributes=$_POST['Products'];

		$model->save();

	}	

	//$model->attributes=$_POST['Products'];

	$model->picture = CUploadedFile::getInstance($model, 'picture');

	$productimg = new ProductImg;

	

    if ($model->picture !== null  && $model->validate(array('picture')))

    {

        $model->picture->saveAs(Yii::app()->getBasePath()."../../../uploads/product/".$model->picture->name);

	$productimg->product_id = 5; // Здесь сейчас тупо 5, 

        пытался сделать что-то вроде $productimg->product_id = $model->id но как вы понимаете не получилось  <img src='http://www.yiiframework.com/forum/public/style_emoticons/default/sad.gif' class='bbc_emoticon' alt=':(' /> 

	$productimg->img_url = $model->picture->name;

	//$productimg->save();

        //$model->file_name = $model->img_url;

        // save picture name

        if( $productimg->save())

        {

            // return data to the fileuploader

            $data[] = array(

                'name' => $model->picture->name,

                'type' => $model->picture->type,

                'size' => $model->picture->size,

		);

        } else {

            $data[] = array('error' => 'Unable to save model after saving picture');

        }

    } else {

        //if ($model->hasErrors('img_url'))

        //{

        //    $data[] = array('error', $model->getErrors('img_url'));

        //} else {

        //    throw new CHttpException(500, "Could not upload file ".     CHtml::errorSummary($model));

        //}

	

	$this->render('create',array(

			'model'=>$model,

		));

    }

    // JQuery File Upload expects JSON data

    echo json_encode($data);

	}

	



Пробовал в afterSave сохранять, примерно так




protected function afterSave(){

        parent::afterSave();

	$productimg = new ProductImg;

	$productimg->product_id = $this->id; // не работает  <img src='http://www.yiiframework.com/forum/public/style_emoticons/default/sad.gif' class='bbc_emoticon' alt=':(' /> 

	$productimg->img_url = $this->picture->name; 

	$productimg->save();



Помогите кто нить пожалуйста, уже третий день парюсь с этой траблой :(

Вопрос решен, тему можно закрывать :unsure: