php 如何在Yii2中上传表格输入的图像?

hwamh0ep  于 2023-04-04  发布在  PHP
关注(0)|答案(1)|浏览(134)

我正在努力与表格输入和图像上传。我没有使用任何扩展/小部件。表单工作完美,但-没有图像上传。
我创建了两个模型:EventForm(单个表单)和EventArtwork(可以是多个表单)
我有一个函数protected function handlePostSave,我通常在动作中这样使用(例如actionCreate),但这对数组不起作用:

protected function handlePostSave(EventArtwork $model)
    {
        if ($model->load(Yii::$app->request->post())) {
            $model->upload = UploadedFile::getInstance($model, 'upload');

            if ($model->validate()) {
                if ($model->upload) {
                    $filePath = 'uploads/' . $model->upload->baseName . '.' . $model->upload->extension;
                    if ($model->upload->saveAs($filePath)) {
                        $model->image = $filePath;
                    }
                }

                if ($model->save(false)) {
                    return $this->redirect(['view', 'id' => $model->id]);
                }
            }
        }
    }

然后像这样使用它:

public function actionUpdate($id)
    {
        $model = $this->findModel($id);
        $modelArtworks = $model->eventArtworks;
 
        $formArtworks = Yii::$app->request->post('EventArtwork', []);
        $this->handlePostSave($formArtworks);
 
        foreach ($formArtworks as $i => $formArtwork) {
            //other stuff
        }

它返回:app\controllers\EventFormController::handlePostSave(): Argument #1 ($model) must be of type app\models\EventArtwork, array given, called in C:\Users\edgar\Projects\yii2-dynamic-tabular-form-app\controllers\EventFormController.php on line 135
我好像在和数组做斗争。
我已经做了什么在**Gist**。我做错了什么?
谢谢大家
埃德加
我希望图像(S)/文件(S)被上传,保存在数据库中。

jgwigjjp

jgwigjjp1#

您发送值$formArtworks = Yii::$app-〉request-〉post('EventArtwork',[]);虽然总是会有一个数组,而且handlePostSave函数需要EventArtwork模型,但由于这个原因,错误
值得去做:

$this->handlePostSave($model->eventArtworks);

相关问题