2015-08-22 18 views
6

Yii ve php için yeniyim. Bir dosya yüklemek ve yolunu veritabanına kaydetmek istiyorum ancak bunu yaparken bir hatam var.Bir üye işlevini çağırır. Nesne olmayan bir nesnede saveAs() [Yii 2]

Benim denetleyicisi sınıftır: Ben dosya yolu kaydetmek

public function actionCreate() 
    { 
     $model = new Quiz(); 

     if ($model->load(Yii::$app->request->post()) && $model->save()) { 
      $fileName = $model->name; 
      $model->file =UploadedFile::getInstance($model,'file'); 
      $model->file->saveAs('uploadQuiz/'.$fileName.'.'.$model->file->extension); 
      $model->filePath = 'uploadQuiz/'.$fileName.'.'.$model->file->extension ; 
      $model->save(); 
      return $this->redirect(['view', 'id' => $model->idQuiz]); 
     } else { 
      return $this->render('create', [ 
       'model' => $model, 
      ]); 

     } 
    } 

Benim veritabanı sütun adı "filePath" dir. Bence dosyasıdır:

public function rules() 
    { 
     return [ 
      [['Course_idCourse', 'duration', 'time'], 'required'], 
      [['Course_idCourse', 'duration', 'totalMarks'], 'integer'], 
      [['time'], 'safe'], 
      [['file'],'file'], 
      [['name', 'filePath'], 'string', 'max' => 200], 
      [['description'], 'string', 'max' => 255] 
     ]; 
    } 

    /** 
    * @inheritdoc 
    */ 
    public function attributeLabels() 
    { 
     return [ 
      'idQuiz' => 'Id Quiz', 
      'Course_idCourse' => 'Course Id Course', 
      'name' => 'Name', 
      'description' => 'Description', 
      'duration' => 'Duration', 
      'time' => 'Time', 
      'file' => 'Quiz ', 
      'totalMarks' => 'Total Marks', 
     ]; 
    } 

Şimdi zaten aynı soru için bu siteyi bakın ama oluşturmak için güncelleme için öyle değil bulmak:

<?php 

use yii\helpers\Html; 
use yii\widgets\ActiveForm; 

/* @var $this yii\web\View */ 
/* @var $model app\models\Quiz */ 
/* @var $form yii\widgets\ActiveForm */ 
?> 

<div class="quiz-form"> 

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

    <?= $form->field($model, 'Course_idCourse')->textInput(['maxlength' => 100]) ?> 

    <?= $form->field($model, 'name')->textInput(['maxlength' => 100]) ?> 

    <?= $form->field($model, 'description')->textInput(['maxlength' => 255]) ?> 

    <?= $form->field($model, 'duration')->textInput(['maxlength' => 100]) ?> 

    <?= $form->field($model, 'time')->textInput() ?> 

    <?= $form->field($model, 'file')->fileInput(); ?> 

    <?= $form->field($model, 'totalMarks')->textInput(['maxlength' => 100]) ?> 

    <div class="form-group"> 
     <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> 
    </div> 

    <?php ActiveForm::end(); ?> 

</div> 

Benim kurallar ve özelliklerdir. KENDLY HELP ME. Çalıştırmayı denediğimde hata alıyorum Nesne olmayan bir öğe olan saveAs() işlevindeki bir üye işlevini çağırın Nerede yanlış gidiyorum anlamıyorum.

+1

olmalıdır? var_dump lütfen önce saveAs() –

+0

Lütfen oluşturma Görünümü (veya _form) kodunu da veriniz. Ben cevap yazmadan önce dosya adını aldığımı kontrol etmek istiyorum. – scaisEdge

+0

@scaisEdge Mesajımı düzenledim, lütfen kontrol et. –

cevap

3

Dosya yüklenmiyor. ActiveForm başlatma içinde option parametre tam olarak ne $ model aracın> dosyasıdır edilir options

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

Teşekkür ederiz yardım ve zamanınız için –

+0

Hoş Geldiniz.Eğer sorunun cevabını çözdüyse, cevabını seç – topher

+0

Benim için çalışmıyor. :-( – maan81

İlgili konular