تالار گفتمان nCIS.ir

نسخه‌ی کامل: مشکل در تابع saveAs
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.

ABZiko

سلام !
این Aliase من :
    'aliases' => [
    	'@upload' => '@frontend/upload',
    ]

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

namespace frontendmodels;

use Yii;
use yiiwebUploadedFile;

class Register extends yiidbActiveRecord{

    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
شما باید اول model->avatar$ رو مقداردهی کنید و بعد validate رو صدا بزنید. بعد هم چک کنید اصلاً model->avatar$ مقدار میگیره یا هنوز null هست.

ABZiko

ممنون استاد، یکی از کاربران انجمن Yii اشاره کرد به فرمم، رفتم دیدمش که enctype رو ectype نوشته بودم ...
استاد 3 سوال دیگه هم داشتم :
1. چرا وقتی فایل آپلود می شه نامش رو در دیتابیس ذخیره نمی کنه ... ؟
2. برای اینکه نام فایل رو تغییر بدم دور baseName یک md5 گذاشتم ولی ارور داد، چرا ؟
3. به نظر شما مشکلی داره اگر پوشه آپلود فایلم در frontend و پوشه upload باشه یا بهتره جای دیگه پوشه رو بزارم ؟