我决定上传几个图像文件使用文件输入小部件
<?= $form->field($model, 'imageFiles[]')->widget(FileInput::classname(),[
'name' => 'imageFiles[]',
'attribute' => 'imageFiles[]',
'options' => ['multiple' => true],
'pluginOptions' => [
'previewFileType' => 'any',
'showPreview' => true,
'showCaption' => true,
'showRemove' => true,
'showUpload' => false,
'uploadClass' => 'hide',
'overwriteInitial'=>false,
'initialPreviewAsData'=>true,
'uploadUrl' => Url::to(['/site/image-manager-upload']),
'fileActionSettings' =>['showUpload' => false],
'maxFileCount' => 10
],
]); ?>
控制员/行动
public function actionCreate()
{
$model = new Hotel();
$model->load(Yii::$app->request->post());
$model->imageFiles = UploadedFile::getInstances($model, 'imageFiles');
var_dump($model->imageFiles);die();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}
return $this->render('create', [
'model' => $model,
]);
}
模型
class Hotel extends \yii\db\ActiveRecord
{
const STATUS_OFF = 0;
const STATUS_ON = 1;
const TYPE_POINTS = 0;
const TYPE_STARS = 1;
public $imageFiles;
/**
* @inheritdoc
*/
public static function tableName()
{
return 'hotel';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['name', 'url', 'reting_id', 'reting_type'], 'required'],
[['text'], 'string'],
[['reting_id', 'reting_type', 'status', 'created_at', 'updated_at'], 'integer'],
[['name', 'url'], 'string', 'max' => 255],
[['imageFiles'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg', 'maxFiles' => 4],
];
}
这是印刷品
array(1) {
[0]=> object(yii\web\UploadedFile)#168 (5) {
["name"]=> string(12) "IMG_2793.jpg"
["tempName"]=> string(36) "C:\OSPanel\userdata\temp\phpC2A1.tmp"
["type"]=> string(10) "image/jpeg"
["size"]=> int(264672) ["error"]=> int(0)
}
后果
结果是数组中只有最后一个文件。如果我不使用这个小部件,那么一切都是正常加载的数组。
如何加载和处理一组照片?
我已经做了。
<? echo FileInput::widget([
'name' => $model->formName() . '[imageFiles][]',
'options' => ['multiple' => true],
'pluginOptions' => [
'previewFileType' => 'any',
'showPreview' => true,
'showCaption' => true,
'showRemove' => true,
'showUpload' => false,
'uploadClass' => 'hide',
'overwriteInitial'=>false,
'initialPreviewAsData'=>true,
'fileActionSettings' =>['showUpload' => false],
'maxFileCount' => 10
],
]); ?
这是工作
我想使用kartik sidenav小部件。我通过composer安装了kartik-v/yii2小部件扩展。 我可以在这里看到:advanced\vendor\kartik-v\yii2 widget sidenav和extensions。php也进行了修改: 然而,在我看来,当我试图使用它时, 它显示类kartik\小部件\SideNav'未找到错误什么是错误的?
所以我正在和Yii2一起工作,对它来说是相当新的。我正在使用Kartik文件上传,并试图将代码转换为多个文件。但它只保存了第一个文件。 我已经删除了验证,因为这也是失败的,但一旦我知道所有其他的都在工作,我会重新添加。 型号: 控制器: 查看:
阅读Yii2 kartik小部件FileInput的文档时,我找不到有关数据应存储在其中的字段类型的任何详细信息。 http://demos.krajee.com/widget-details/fileinput 我应该使用BLOB字段还是String?
我试图使用在表单中加载多个文件。 我使用我的表将文件名和其他字段保存在数据库中,并将文件保存在我的文件系统中。我通常把和通过表链接起来。 我成功地保存了多个文件,但当我加载特定
这是情况:我是第一次在Yii2上,想在ActiveForm中使用一些文件上传器小部件...到目前为止,我已经找到了这个出色的:\kartik\widget\FileInput 有了这个小部件,我可以管理文件上传,然后,当进入编辑模式时,显示以前上传的图像和替换它的机会。 问题是,如果我按下表单的“更新”按钮而不修改图像,yii说图像“不能是空的”,因为我在模型中设置了“必需”规则。
我正在使用kartik文件输入。 我无法验证,即在提供所需文件时仍然显示验证错误。下面是我的代码。文件已正确上载。但仍然显示“请上传一个文件。” 视图: 行动: 模型设置: 上传功能: