gpt4 book ai didi

error-handling - yii2要验证的尺寸并以表格形式显示错误消息

转载 作者:行者123 更新时间:2023-12-03 08:51:35 25 4
gpt4 key购买 nike

在yii2项目中,我有自己的文件结构设置。上传的所有内容都会保存为文件类型。我可以使用yii2在temp文件夹中上传的文件来获取文件尺寸。使用这些尺寸,我可以设置自己的宽度和高度并进行比较。如果高度和宽度大于我声明的高度,则会在表单中显示错误消息。我无法做到这一点。

我的 Activity 表格

<div class="company-form">

<?php
$form = ActiveForm::begin([
'action'=>['company/logo', 'id'=>$model->company_id],
'validateOnSubmit' => true,
'options' =>
['enctype' => 'multipart/form-data','class' => 'disable-submit-buttons','id'=> 'companyLogoForm'],
'fieldConfig' => [
'template' => "<div class=\"row\">
<div class=\"col-xs-6 margin-top-8\">{label}</div>\n<div class=\"col-xs-6 text-right\">{hint}</div>
\n<div class=\"col-xs-12 \">{input}</div>
</div>",
],
]); ?>

<?= $form->errorSummary($model, $options = ['header'=>'','class'=>'pull-left']); ?>

<?= $form->field($model, 'company_name')->hiddenInput(['maxlength' => true])->label(false) ?>

<?= $form->field($file, 'file')->fileInput([])->label(Yii::t('app', 'Attach Logo'),['class'=> 'margin-top-8']) ?>

<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Save') : Yii::t('app', 'Save'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary','data' => ['disabled-text' => 'Please Wait']]) ?>
</div>

<?php ActiveForm::end(); ?>

</div>

我的 Controller 操作
public function actionLogo($id)
{
$model = $this->findModel($id);

if ($model->load(Yii::$app->request->post()) && $model->validate()) {

$file = new File;
$file->load(Yii::$app->request->post());
$a = UploadedFile::getInstance($file,'file');
$size = getimagesize($a->tempName);
$maxWidth = 500;
$maxHeight = 500;
if ($size[0] > $maxWidth || $size[1] > $maxHeight)
{
$model->addError('file', $error = 'Error Message');
if($model->hasErrors()){
return ActiveForm::validate($model);
}

}

$file->file = UploadedFile::getInstance($file,'file');
$file->file_name = $file->file->name;
$file->file_user = Yii::$app->user->id;
$file->file_type = 1;

if($file->save()){
$file->file_path = Files::getFilePath($file->file_id);
$validDir = $file->file->createFileDir($file->file_path, $file->file_id);

if($validDir){
$file->file->saveAs($file->file_path, false);
if($file->save()){
$model->company_file = $file->file_id;
$model->save();
return $this->redirect(['index']);
}
}
}
}
}

如何在 Controller 中添加错误消息,并将错误消息传递到模态框上的表单中。

注意:我的表格显示在模式框中。

谢谢!!

最佳答案

您应该在模型中处理文件处理-甚至更好地为此创建一个特定的UploadForm模型。
在这种情况下,您可以使用文件验证或自定义验证器来设置模型验证期间的错误。
内置的yii\validators\FileValidator为您提供了许多开箱即用的pf验证规则。

实际上,在文档中对此进行了很好的解释:Uploading Files

另请参阅FileValidator文档

验证上传的图像文件的示例:

namespace app\models;

use yii\base\Model;
use yii\web\UploadedFile;

class UploadForm extends Model
{
/**
* @var UploadedFile
*/
public $imageFile;

public function rules()
{
return [
[['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'],
];
}

public function upload()
{
if ($this->validate()) {
$this->imageFile->saveAs('uploads/' . $this->imageFile->baseName . '.' . $this->imageFile->extension);
return true;
} else {
return false;
}
}
}

关于error-handling - yii2要验证的尺寸并以表格形式显示错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39612259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com