【发布时间】: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' => 2],然后我上传的文件名称长度超过两个文件无法上传。
有什么帮助吗?
【问题讨论】:
-
主要问题是,您尝试使用单个属性,就好像它是具有不同类型(文件和字符串)的两个属性一样。当您编辑我对上一个问题的答案时,我认为您正在以某种方式在 JS 中处理这个事实。您不能只对同一属性进行文件输入和文本输入。浏览器将始终仅发送具有相同名称的稍后输入。
-
@Michal,谢谢,我现在明白了
标签: validation yii2