مشکل در آپلود فایل

سلام !

این Aliase من :




    'aliases' => [

    	'@upload' => '@frontend/upload',

    ]



این Model من هستش برای آپلود :




<?php


namespace frontend\models;


use Yii;

use yii\web\UploadedFile;


class Register extends \yii\db\ActiveRecord{


    public $avatar;


    public function rules(){

        return [

            [['firstName','lastName','userName','passWord','mail'],'required'],

            [['firstName','lastName'],'string'],

            ['passWord','integer'],

            ['mail','email'],

            [['avatar'],'file','skipOnEmpty' => true,'extensions' => 'png,jpg,jpeg,gif']

        ];

    }


    public function upload(){

        $this->avatar->saveAs(Yii::getAlias('@upload').'/'.$this->avatar->baseName.'.'.$this->avatar->extension);

    }


    public function attributeLabels(){

        return [

            'firstName' => Yii::t('app','نام'),

            'lastName' => Yii::t('app','نام خانوادگی'),

            'userName' => Yii::t('app','نام کاربری'),

            'passWord' => Yii::t('app','رمز عبور'),

            'firstName' => Yii::t('app','نام'),

            'mail' => Yii::t('app','رایانامه'),

            'avatar' => Yii::t('app','چهرک')

        ];

    }    

}




این هم کنترلر من :




    public function actionRegister(){

        $model = new Register();

        if($model->load(Yii::$app->request->post()) && $model->validate()){

            $model->avatar = UploadedFile::getInstance($model,'avatar');

            if($model->save()){

                $model->upload();

                return $this->render('_showResult',['model' => $model]);

            }

        }else{

            return $this->render('_register',['model' => $model]);

        }


    }



ولی این ارور رو می ده : Call to a member function saveAs() on a non-object

مشکل از چیست دوستان ؟ :wink:

[rtl]

کد فرم رو هم بگذارید بهتر میشه نظر داد

شاید ‘enctype’=>‘multipart/form-data’ در فرم از قلم افتاده

[/rtl]

خدمت شما :




<meta charset="UTF-8">

<?php


use yii\widgets\ActiveForm;

use yii\helpers\Html;


$this->title = "ط«ط¨طھ ظ†ط§ظ… | Registeration";


?>

<?php $register=ActiveForm::begin(['options' => ['ectype' => 'multipart/form-data']]); ?>

<?=$register->field($model,'firstName'); ?>

<?=$register->field($model,'lastName'); ?>

<?=$register->field($model,'userName'); ?>

<?=$register->field($model,'passWord')->passwordInput(['maxLength' => true]); ?>

<?=$register->field($model,'mail'); ?>

<?=$register->field($model,'avatar')->fileInput(); ?>

<?=Html::submitButton('Submit',['class'=>'btn btn-sm btn-success']); ?>

<?php $register=ActiveForm::end(); ?>




[rtl]

این کد وقتی عکسی آپلود نشده باشه باید همین ارور رو بده. ولی وقتی عکس آپلود شه باید کار کنه

در همه حالات ارور میده؟

این شرط رو اضافه کنید تو همه حالات باید کار کنه:

[/rtl]




    public function upload(){

        if (null != $this->avatar)

            $this->avatar->saveAs('path/to/file');

    }



ممنون، مشکل از همون صفحه فرم بود …

دو تا سوال دیگه هم داشتم :

  1. به نظر شما پوشه ای که قراره عکس ها در اون اپلود بشن مهم هستش یا نه؟

  2. من می خوام وقتی عکس کاربر آپلود شد، در کنارش نام کاربر رو هم در دیتابیس ذخیره کنه، ولی فقط آپلود می شه؟ چطور می تونم این مشکل رو حل کنم ؟

تشکر فراوان