2015-08-22 10 views
6

Sono nuovo per yii e php. Voglio caricare un file e salvare il suo percorso nel database, ma mentre lo faccio ho ricevuto un errore.Chiamata a una funzione membro saveAs() su un oggetto non [Yii 2]

mia classe controller è:

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

     } 
    } 

mio database nome della colonna dove salvare il mio percorso del file è "filePath". Il mio file di vista è:

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

Le mie regole e gli attributi sono:

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

Ora ho già riferimento questo luogo per la stessa domanda, ma io lo trovo per l'aggiornamento non per creare. MI AIUTANO SEMPRE. Quando corro prova a creare ho ricevuto un errore Chiamata a una funzione membro saveAs() su un oggetto non Non capisco dove sto andando male.

+1

che cosa è esattamente $ modello-> file è? var_dump per favore prima di saveAs() –

+0

Si prega di fornire anche il codice create View (o _form). Voglio controllare dove si ottiene il nome del file prima di rispondere – scaisEdge

+0

@scaisEdge Ho modificato il mio post, si prega di controllare. –

risposta

3

Nessun file è stato caricato. Il parametro option nella inizializzazione ActiveForm dovrebbe essere options

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

Grazie per il tuo aiuto e il tuo tempo –

+0

Sei il benvenuto Se risolvi il problema selezionalo come risposta – topher

+0

Non funziona per me. :-( – maan81

Problemi correlati