2015-08-22 20 views
6

Jestem nowym użytkownikiem yii i php. Chcę przesłać plik i zapisać jego ścieżkę do bazy danych, ale robiąc to, wystąpił błąd.Wywołanie funkcji składowej saveAs() na obiekcie nie będącym obiektem obiektu [Yii 2]

Moja Klasa kontroler jest:

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, 
      ]); 

     } 
    } 

Moja baza nazwa kolumny, gdzie mogę zapisać ścieżkę pliku jest „filePath”. Mój plik widok jest:

<?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> 

moje zasady i atrybuty to:

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

Teraz już odnoszą tę witrynę do tej samej kwestii, ale uważam to za nie do tworzenia aktualizacji. KINDLY HELP ME. Po uruchomieniu próbuję utworzyć Wystąpił błąd Zadzwoń do funkcji składowej saveAs() na obiekcie nie będącym obiektem obiektu. Nie wiem, gdzie się źle dzieje.

+1

Co dokładnie $ model-> plik jest? var_dump proszę przed saveAs() –

+0

Proszę również podać kod widoku widoku (lub _form). Chcę sprawdzić, gdzie znajduje się nazwa pliku przed odpowiedzią – scaisEdge

+0

@scaisEdge Edytowałem mój post, proszę to sprawdzić. –

Odpowiedz

3

Żaden plik nie jest ładowany. Parametr w inicjalizacji ActiveFormoption powinny być options

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

Dziękuję za pomoc i czas –

+0

Nie ma za co Jeśli rozwiązałeś swój problem, wybierz go jako odpowiedź – topher

+0

Nie działa dla mnie. :-( – maan81