ty39pa
@ty39pa
Game Design

Работа с файлами Yii. В чем ошибка?

Добрый день. Нужно получить доступ к файлу в приложении. Для этого мне нужно его загрузить через форму. Создал форму по одному из гайдов на официальном сайте YiiFramework.
Модель
public $imageFile;

    public function rules()
    {
        return [
            [['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'pdf, png, jpg'],
        ];
    }

    public function upload()
    {
        if ($this->validate()) {
            $this->imageFile->saveAs('uploads/' . $this->imageFile->baseName . '.' . $this->imageFile->extension);
            return true;
        } else {
            return false;
        }
    }

Контроллер
public function actionUpload()
    {
        $model = new \app\models\UploadForm();

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

Вьюшка
$form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]);
$form->field($file, 'imageFile')->fileInput();

ActiveForm::end();


В итоге получаю не форму загрузки файла, а
Call to a member function formName() on a non-object


Обыскал много форумов, пока что ничего не помогло!
  • Вопрос задан
  • 168 просмотров
Пригласить эксперта
Ответы на вопрос 2
VladimirAndreev
@VladimirAndreev
php web dev
$form->field($file, 'imageFile')->fileInput();

$file - точно инстанс yii\base\Model в view?
Ответ написан
Комментировать
@Skrolea
<?= $form->field($model, 'imageFiles[]')->fileInput(['multiple' => true, 'accept' => 'image/*']) ?>


У вас $model там должен быть, а не $file
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы