Yii 2 在字符串上调用成员函数 saveAs()

Yii 2 Call to a member function saveAs() on string

Yii 新手,我在“发送电子邮件”页面上收到此错误。有问题的字符串是附件的路径和附件名称,我假设 saveAs 函数需要一个字符串。有什么想法我想念的吗?

形式:

<?php

use yii\helpers\Html;
use yii\widgets\ActiveForm;

/* @var $this yii\web\View */
/* @var $model app\models\emails */
/* @var $form yii\widgets\ActiveForm */
?>

<div class="emails-form">

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

    <?= $form->field($model, 'reciever_name')->textInput(['maxlength' => 50]) ?>

    <?= $form->field($model, 'receiver_email')->textInput(['maxlength' => 200]) ?>

    <?= $form->field($model, 'subject')->textInput(['maxlength' => 255]) ?>

    <?= $form->field($model, 'content')->textarea(['rows' => 6]) ?>

    <?= $form->field($model, 'attachment')->fileInput(['maxlength' => 255]) ?>

    <div class="form-group">
        <?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
    </div>

    <?php ActiveForm::end(); ?>

</div>

和控制器:

public function actionCreate()
    {
        $model = new emails();

        if ($model->load(Yii::$app->request->post())) {

            // upload the attachment
            $model->attachment = UploadedFile::getInstance($model, 'attachment');

            if($model->attachment)
            {
                parent::init();
                $time = time();
                //$model->attachment->saveAs('attachments/'.$time.'.'.$model->attachment->extension);
                //$model->attachment = 'attachments/'.$time.'.'.$model->attachment->extension;
            }
            if($model->attachment)
            {
                $value = Yii::$app->mailer->compose()
                ->setFrom(['my_email@gmail.com' => 'Paul'])
                ->setTo ($model->receiver_email)
                ->setSubject ($model->subject)
                ->setHtmlBody ($model->content);
                foreach ($model->attachment as $file) {
                    //$filename = 'attachments/'.$time.'.'.$model->attachment->extension;
                    $filename = 'attachments/file.jpg';
                    //var_dump($filename);die();
                    $file->saveAs($filename);
                    $value->attach('attachments/file.jpg');
                    //$value->attach('attachments/'.$time.'.'.$model->attachment->extension);
                }
                $value->send();
            }else{
             $value = Yii::$app->mailer->compose()
             ->setFrom(['my_email@gmail.com' => 'Paul'])
             ->setTo($model->receiver_email)
             ->setSubject($model->subject)
             ->setHtmlBody($model->content)
             ->send();
         }

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

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

我试过绝对路径和动态路径,但都具有相同的输出,我卡住了

Save as() 函数需要实际路径。所以这是问题。请确保您的路径正确且可访问。