Yii框架文件上传



我正在学习如何在Yii中上传图像文件。我正在使用这个代码

<?php
use yiiwidgetsActiveForm;
?>
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
<?= $form->field($model, 'imageFile')->fileInput() ?>
<button>Submit</button>
<?php ActiveForm::end() ?>

在ProjectFile/views/site/upload.php文件中。出现问题

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

$model给了我一个红色下划线。我看过很多例子,他们都是这样写的。我需要做些什么来阻止这个问题?

编辑:在控制器/SiteController.php 内

// function for upload
public function actionUploadImage()
{
$model = new UploadImageForm();
if (Yii::$app->request->isPost) {
$model->imageFile = UploadedFile::getInstance($model, 'imageFile');
if ($model->upload()) {
// file is uploaded successfully
return;
}
}
return $this->render('upload', ['model' => $model]);
}

在模型内部/UploadImageForm.php

<?php

namespace appmodels;
use yiibaseModel;
use yiiwebUploadedFile;
class UploadImageForm extends yiibaseModel
{
public $imageFile;
// gives rules of how to upload picture
public function rules(){
return [
[['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'],
];
}
// uploads picture
public function upload(){
if($this->validate()){
$this->imageFile->saveAs('uploads/' . $this->imageFile->baseName . '.' . $this->imageFile->extension);
}
}
}
  1. 请确保模型具有名为"imageFile">
  2. 检查一下你的编辑。你的编辑有红线吗?然后是你的编辑相关问题

我也遇到了同样的情况,您的视图代码非常好。我的也是一样的,我通过在模型函数中使用这些行来实现它:

$imageFile= UploadedFile::getInstances($model, 'imageFile')[0];
$imageFile->saveAs('uploads/' . $imageFile->baseName . '.' . $imageFile->extension);

控制器动作:

$model->imageFile= UploadedFile::getInstances($model, 'imageFile')[0];

在views\upload.php中显示红色下划线,因为系统找不到$模型。运行时,程序将$model连接到控制器。因此,红色下划线对于php文件来说不是问题。

最新更新