使用yii2和Kartik fileInput扩展名上传多个图像时遇到这个小问题。
这是模型:
public $file;
public static function tableName()
{
return 'news';
}
public function rules()
{
return [
[['news_desc', 'news_context', 'news_first_source', 'news_second_source', 'news_third_source', 'news_responsibe_party', 'news_first_testimony', 'news_second_testimony', 'news_body', 'news_lang'], 'string'],
[['news_gov_id', 'news_typ_id', 'news_is_in_slider', 'news_is_act', 'news_is_del'], 'integer'],
[['news_happened_date', 'news_created_date', 'file'], 'safe'],
[['news_typ_id', 'news_lang'], 'required'],
[['news_title'], 'string', 'max' => 255],
[['file'], 'file','maxFiles' => 6],
];
}
你可以注意到我正在使用maxFiles,但它对我没有用
控制器:
public function actionCreate_news()
{
$model = new News();
if ($model->load(Yii::$app->request->post())) {
$model->file = UploadedFile::getInstances($model, 'file');
var_dump($model->file);
die();}}
现在我只是var转储我得到的文件,但问题是只有一个文件而不是我上传的所有文件
视图:
echo FileInput::widget([
'model' => $model,
'attribute' => 'file[]',
'name' => 'file[]',
'options' => [
'multiple' => 'true',
'accept' => 'image/*'
],
'pluginOptions' => [
'showCaption' => false,
'showRemove' => false,
'showUpload' => false,
'allowedFileExtensions' => ['jpg','jpeg','png'],
'overwriteInitial' => false
],
]);
我已经阅读了有关此问题的所有内容并尝试了所有可能的解决方案,但问题仍然存在
当我按表单提交时,只会提交最后一个文件
感谢
答案 0 :(得分:0)
从此小部件中删除'name' => 'file[]',
,也可以从true中单引号。
echo FileInput::widget([
'model' => $model,
'attribute' => 'file[]',
'options' => [
'multiple' => true,
'accept' => 'image/*'
],
'pluginOptions' => [
'showCaption' => false,
'showRemove' => false,
'showUpload' => false,
'allowedFileExtensions' => ['jpg','jpeg','png'],
'overwriteInitial' => false
],
]);
原件:
echo FileInput::widget([
'model' => $model,
'attribute' => 'attachment_1[]',
'options' => ['multiple' => true]
]);
答案 1 :(得分:0)
谢谢大家,我想出了我的问题的解决方案,我在提交表单时尝试上传图片,但它转向我错了,所以我使用小部件上传图像使用像这里的ajax: http://webtips.krajee.com/ajax-based-file-uploads-using-fileinput-plugin/
然后使用插件事件,当表单提交时,我将文件名保存在数据库中