【问题标题】:yii2 file extension validation not worksyii2 文件扩展名验证不起作用
【发布时间】:2019-10-31 16:57:30
【问题描述】:

我的模型中有这样的规则

public function rules()
{
    return [
        [['tbl_data_induk_mahasiswa_id'], 'required'],
        [['tbl_data_induk_mahasiswa_id'], 'integer'],
        [['nama'], 'file','extensions'=>'png,jpg','maxSize' => 1024000,'tooBig' => 'Size maksimum adalah 1 MB'],

        [['nama'], 'string', 'max' => 300],

        [['tbl_data_induk_mahasiswa_id'], 'unique'],
        [['tbl_data_induk_mahasiswa_id'], 'exist', 'skipOnError' => true, 'targetClass' => TblDataIndukMahasiswa::className(), 'targetAttribute' => ['tbl_data_induk_mahasiswa_id' => 'id']],
    ];
}

我有这样的形式

<?php
use yii\helpers\Html;
//use yii\widgets\ActiveForm;
echo Html::beginForm(
     ['mahasiswa-foto-biodata/update'],
     'post',
     ['enctype' => 'multipart/form-data'] //if you want to upload file with post
); ?>
<div class="form-group form-file-upload form-file-multiple">
    <?= Html::activeFileInput(
        $model,
        'nama',
        ['class' => 'inputFileHidden', 'multiple' => '']
    ); ?>
    <div class="input-group">
        <?= Html::activeTextInput(
            $model,
            'nama', 
            [
                'class' => 'form-control inputFileVisible',
                'placeholder' => 'Single File',
            ]
        ); ?>
        <span class="input-group-btn">
            <button type="button" class="btn btn-fab btn-round btn-primary">
                <i class="material-icons">attach_file</i>
            </button>
        </span>
    </div>
</div> 
<div class="form-group">
<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
</div>  
<?= Html::endForm(); ?>

我不能使用 activeForm 小部件,因为我必须创建适合我的模板的 html 表单,表单有效,文件成功上传,问题是每个文件都成功上传,不仅仅是 png 或 jpg,但如果我将nama 的最大规则更改为[['nama'], 'string', 'max' =&gt; 2],然后我上传的文件名称长度超过两个文件无法上传。

有什么帮助吗?

【问题讨论】:

  • 主要问题是,您尝试使用单个属性,就好像它是具有不同类型(文件和字符串)的两个属性一样。当您编辑我对上一个问题的答案时,我认为您正在以某种方式在 JS 中处理这个事实。您不能只对同一属性进行文件输入和文本输入。浏览器将始终仅发送具有相同名称的稍后输入。
  • @Michal,谢谢,我现在明白了

标签: validation yii2


【解决方案1】:

请检查您的表单,您有 02 种具有相同名称(“nama”)的输入。一个是“文件”,一个是“文本” 我认为这是使您的表单无法正常工作的原因!

【讨论】:

    猜你喜欢
    • 2018-07-12
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 2015-06-14
    • 2011-04-07
    相关资源
    最近更新 更多