首页 > 解决方案 > 没有对应视图的 URL

问题描述

我试图让文件上传以与现有文件相同的方式工作,所以我试图看看它是如何工作的。原始上传功能只是调用一个 URL (site.com/model/upload/model_id),然后选择的文件保存在服务器上。除此之外,它的渲染与模型视图完全相同(site.com/model/model_id)

看到这一点,我开始查看所有服务器文件。没有一个名为上传的文件,没有任何其他提及该 URL,甚至没有任何站点控制器中的内容。我发现的唯一东西是在modelController中:

public function actionUpload($id) {
    $model = new Model(); 
    $model->file = UploadedFile::getInstance($model, 'file');
    if ($model->file) {
        $path = 'uploads/documents/'. $id .'/';
        FileHelper::createDirectory($path);
        $model->file->saveAs($path . $model->file->baseName . '.' . $model->file->extension);

    }

    return $this->render('view', ['model' => $this->findModel($id)]);
}

这是如何运作的?我尝试使用具有不同名称的此函数的副本来复制它,但这只会给我一个找不到页面的错误。

视图中文档上传的代码是这样的:

<?php $form = ActiveForm::begin(['action' => \yii\helpers\Url::to(['upload', 'id' => $model->id]), 'options' => ['enctype' => 'multipart/form-data']]) ?>
    <?= $form->field($model, 'file')->fileInput(['style' => ''])->label(false) ?>
    <?= Html::submitButton('Upload', ['class' => 'btn-success']) ?>
<?php ActiveForm::end() ?>

编辑:通过向 actionUpload 函数添加布尔参数来解决。

标签: phpyii2

解决方案


推荐阅读