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

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

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

#1 User is offline   melomaniac 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 14-January 13

Posted 17 August 2013 - 04:40 AM

Всем добрый день. Захотел я прикрутить такую вот вещь http://www.yiiframew...eupload-widget/

Файла сохраняется, в БД не пишется. Решил начать с малого, нашел рецепт http://yiiframework....orm.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:
0

#2 User is offline   melomaniac 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 14-January 13

Posted 17 August 2013 - 05:54 AM

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

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


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

#3 User is offline   melomaniac 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 14-January 13

Posted 17 August 2013 - 07:26 AM

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

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'),
		);
	}


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

#4 User is offline   Ragazzo 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 47
  • Joined: 12-August 12

Posted 17 August 2013 - 07:56 AM

>array('img_url', 'safe'),
:)
1

#5 User is offline   melomaniac 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 14-January 13

Posted 17 August 2013 - 02:03 PM

View PostRagazzo, on 17 August 2013 - 07:56 AM, said:

>array('img_url', 'safe'),
:)


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

#6 User is offline   Ragazzo 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 47
  • Joined: 12-August 12

Posted 17 August 2013 - 10:57 PM

enctype= multipart/form-data method= post
?
0

#7 User is offline   melomaniac 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 14-January 13

Posted 18 August 2013 - 10:15 AM

View PostRagazzo, on 17 August 2013 - 10:57 PM, said:

enctype= multipart/form-data method= post
?


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

#8 User is offline   melomaniac 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 14-January 13

Posted 18 August 2013 - 02:23 PM

Почти допилил, подскажите пожалуйста следующий момент, есть 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())
        {



:(
0

#9 User is offline   melomaniac 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 14-January 13

Posted 19 August 2013 - 09:42 PM

Всем доброе утро,допилил уже совсем почти, но остался один момент, подскажите пожалуйста как присвоить 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 но как вы понимаете не получилось  :( 
	$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; // не работает  :( 
	$productimg->img_url = $this->picture->name; 
	$productimg->save();


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

#10 User is offline   melomaniac 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 14-January 13

Posted 23 August 2013 - 08:08 AM

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

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users