Yii:使用CActiveForm获取表单文件的问题

时间:2018-05-08 12:21:57

标签: php forms yii frameworks

我的表格:

<?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 :(得分:0)

看来你有一个错字。尝试使用

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