Yii: Проблемы с получением файла формы с CActiveForm - PullRequest
0 голосов
/ 08 мая 2018

Моя форма:

<?php 
     $form=$this->beginWidget('CActiveForm', array(
    'id'=>'news-form',
    'htmlOptions'=>array('enctype'=>'multipart/form-data'),
));
?>

     <div class="form-group col-sm-12 col-md-6">
       <?php echo $form->labelEx($news,'state'); ?>
       <?php echo $form->dropDownList($news,'state', CHtml::listData($op,'Value','Type'),array('class' => 'form-control')) ?>
       <?php echo $form->error($news,'state'); ?>
      </div>

     <!-- HERE MY PROBLEM -->
     <input type="file" name="original" onchange="change(event)" id="original" />

     <?php echo CHtml::submitButton(Yii::t('app','CreateNewsLabel'), array('class' => 'btn btn-primary'), $news->isNewRecord ? 'Create' : 'Save'); ?>

Когда в мой контроллер я пытаюсь получить файл, которого не существует:

    if (isset($_FILE['original'])) {
        //..
    }

If никогда не выполняется. Я пробовал много возможных решений, но это не работает. Я не понимаю причину, потому что я использую mulipart / form-data и должен существовать ...

Спасибо, привет.

1 Ответ

0 голосов
/ 09 мая 2018

Кажется, у вас есть опечатка. попробуйте использовать

if (isset($_FILES['original'])) {
        //..
}

вы также можете попытаться выполнить такую ​​проверку через YII вместо того, чтобы использовать PHP по умолчанию.

$model->image=CUploadedFile::getInstance($model,'original');

В представлении вы можете добавить это.

echo $form->labelEx($model, 'original');
echo $form->fileField($model, 'original');
echo $form->error($model, 'original');

Чтобы добавить проверки в ваш файл перед загрузкой, попробуйте это.

public function rules()
{
    return array(
        array('original', 'file', 'types'=>'jpg, gif, png', 'safe' => false),
    );
} 
...