2015-08-22 16 views
6

Tôi mới dùng yii và php. Tôi muốn tải lên một tệp và lưu đường dẫn của nó vào cơ sở dữ liệu nhưng trong khi làm như vậy tôi đã gặp lỗi.Gọi đến một hàm thành viên saveAs() trên một đối tượng không [Yii 2]

lớp điều khiển của tôi là:

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

     } 
    } 

tên cột cơ sở dữ liệu của tôi, nơi tôi lưu đường dẫn file của tôi là "filepath". tập Quan điểm của tôi là:

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

quy tắc và các thuộc tính của tôi là:

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

Bây giờ tôi đã tham khảo trang web này cho cùng một câu hỏi nhưng tôi thấy nó để cập nhật không cho tạo. KINDLY HELP ME. Khi tôi chạy thử, tôi đã gặp lỗi Gọi đến hàm thành viên saveAs() trên một đối tượng không Tôi không tìm ra nơi nào tôi đang gặp sự cố.

+1

Chính xác $ model-> tệp là gì? var_dump it please before saveAs() –

+0

Vui lòng cung cấp mã tạo dạng xem (hoặc _form). Tôi muốn kiểm tra xem bạn lấy tên tệp ở đâu trước câu trả lời – scaisEdge

+0

@scaisEdge Tôi đã chỉnh sửa bài đăng của mình, vui lòng kiểm tra. –

Trả lời

3

Không có tệp nào đang được tải lên. Thông số option trong việc khởi tạo ActiveForm phải là options

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

Cảm ơn bạn để được giúp đỡ và thời gian của bạn –

+0

Bạn được chào đón.Nếu điều này giải quyết vấn đề của bạn, hãy chọn nó làm câu trả lời: – topher

+0

Không làm việc cho tôi. :-( – maan81

Các vấn đề liên quan