0

我有一个表格,里面只有一个字段。

<?php echo $form->fileFieldRow($model,'img',array('rows'=>6, 'cols'=>50)); ?>

在我的模型中,我设置了 img 是必需的

array('img', 'required'),

我添加了一些文件验证规则

array('img', 'file', 'types'=>'jpg, gif, png' , 'maxFiles'=>'1'),           

选择图像并按提交后。我收到需要“img”的错误。这是因为 img 不是在Post中而是在Files中设置的。所以它没有看到 img 已设置。

有没有一种好方法可以在表单中只允许一个图像上传字段

4

1 回答 1

2

在你的表格中试试这个

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'imageGallery-form',
    'action'=>Yii::app()->createAbsoluteUrl('/Controller/action'),
    'enableClientValidation'=>true,
    'clientOptions'=>array(
    'validateOnSubmit'=>true,
        ),
    'htmlOptions'=>array('enctype'=>'multipart/form-data'),// This is required for file upload
    )); ?>

<div class="row">
        <span class="span-4">Uplaod images:</span>
        <?php echo $form->fileField($model,'Img',array('id'=>'file')); ?>
     ?>
</div>

添加一些脚本来验证文件字段

<script type="text/javascript">
$('#imageGallery-form').live("submit", function(event){
    var success = true;
    $form = $(this);
     if(/.*\.(gif)|(jpeg)|(jpg)|(doc)$/.test($("#file").val().toLowerCase())){
         $("#fname").removeClass("error");
    }else{
        $("#error_ul").append("<li>Please Choose Gif or Jpg Images Only.!!</li>");
        $(".errorSummary").show();
        $("#fname").addClass("error");
        success = false;
    }

}); 
</script>

并在控制器端访问图像,如图所示

public function actionGetImage(){
    if(isset($_POST['imageUploadBtn'])){
        $Img=CUploadedFile::getInstance($model, 'Img');
    }

}

于 2013-06-15T11:10:20.290 回答