gpt4 book ai didi

javascript - Zend_Form Jquery 和 fileUploadErrorIniSize

转载 作者:行者123 更新时间:2023-11-29 16:26:41 25 4
gpt4 key购买 nike

编辑,我通过将 JS 更改为:

$('.zend_form input:not([type="file"]), .zend_form textarea').each(function() {
data[$(this).attr('name')] = $(this).val();
});

你好,

正如我之前发布的,我遵循了 ZendCast,它允许您使用 jQuery 来检测并向用户显示表单问题。

但是,文件字段始终返回:fileUploadErrorIniSize(文件“image_front_url”超出定义的 ini 大小”,即使文件在大小限制内。

TPL 表格:

<?php $this->headScript()->captureStart(); ?>

$(function() {

$('.zend_form input, .zend_form textarea').blur(function() {
var formElementId = ($(this).parent().prev().find('label').attr('for'));
doValidation(formElementId);
});
});


function doValidation(id) {

var url = '/<?php echo MODULE; ?>/json/validateform/form_name/<?php echo get_class($this->form); ?>';
var data = {};

$('.zend_form input, .zend_form textarea').each(function() {
data[$(this).attr('name')] = $(this).val();
});

$.post(url, data, function(resp) {
$('#'+id).parent().find('.errors').remove();
$('#'+id).parent().append(getErrorHtml(resp[id], id));
}, 'json');

};

function getErrorHtml(formErrors, id) {

var o = '';
if (formErrors != null) {
var o = '<ul id="errors-'+id+'" class="errors">';

for (errorKey in formErrors) {
o += '<li>'+formErrors[errorKey]+'</li>';
}
o += '</ul>';
}
return o;
}

<?php $this->headScript()->captureEnd(); ?>


<?php
if (is_object($this->form) && $this->form->getErrorMessages()) {
echo $this->partial('partials/errors.phtml', array('errors' => $this->form->getErrorMessages(), 'translate' => $this->translate));
}
?>

<?php if (isset($this->errorMsg)) { ?>
<p><?php echo $this->errorMsg; ?></p>
<?php } ?>

<?php echo $this->form; ?>

这是针对

<?php

class Administration_JsonController extends Zend_Controller_Action {


public function validateformAction() {

$form_name = $this->_getParam('form_name');
$form = new $form_name();
$data = $this->_getAllParams();

$form->isValidPartial($data);
$json = $form->getMessages();
$this->_helper->json($json);
}

}

返回的json示例:

{"name":{"isEmpty":"Value is required and can't be empty"},"name_url":{"isEmpty":"Value is required and can't be empty"},"image_site_url":{"fileUploadErrorIniSize":"File 'image_site_url' exceeds the defined ini size"},"image_url":{"fileUploadErrorIniSize":"File 'image_url' exceeds the defined ini size"},"image_front_url":{"fileUploadErrorIniSize":"File 'image_front_url' exceeds the defined ini size"},"image_back_url":{"fileUploadErrorIniSize":"File 'image_back_url' exceeds the defined ini size"}}

我注意到有些人遇到了这个问题,他们说 isValidPartial 修复了它,所以我改变了

$form->isValid($data);

$form->isValidPartial($data);

但它没有解决这个问题。

有什么想法吗?

最佳答案

问题是您不能像对待常规文本字段那样对待文件字段。

当您调用 $('input').val() 时,您将获得文本字段的实际文本值,但对于文件字段,您将获得文件名 - 而不是文件内容。

然后您的脚本尝试将您的文件名验证为文件,但显然失败了。为了使文件验证器成功,您需要将实际文件内容传递给脚本。

因此,基本上,您需要将文件异步上传到服务器以执行所有必要的验证。

不幸的是,通过 Ajax 上传文件并不是一件简单的事情。您的基本选项是通过 iFrameswfObject 上传文件。您可以查看适合此目的的各种插件 here .

我个人对异步文件上传的选择是 file-uploader jQuery plugin .

关于javascript - Zend_Form Jquery 和 fileUploadErrorIniSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5597581/

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