【问题标题】:Yii: Problems about getting form file with CActiveFormYii:关于使用 CActiveForm 获取表单文件的问题
【发布时间】:2018-05-08 12:21:57
【问题描述】:

我的表格:

<?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 并且应该存在...

谢谢你,问候。

【问题讨论】:

标签: php forms yii frameworks


【解决方案1】:

看来你打错了。尝试使用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多